LZO 的压缩测试失败
我真诚地感谢您阅读我的帖子。
我正在尝试在我的服务器(运行 Xeon CPU)上的 HBase 上安装 LZO 2.03 压缩编解码器。 我目前正在运行 Hadoop 0.20.1 和 HBase 0.90.2。
我遵循了 http://wiki.apache.org/hadoop/UsingLzoCompression 中的指南。我从 http://code 下载了 LZO 本机连接器 (Hadoop-GPL- Compression) .google.com/p/hadoop-gpl-compression/。
我使用 ./configure --prefix=/home/ckwon/wks/test/lzo_lib_x64 --enable-shared --disable-asm --build=x86_64-pc-linux-gnu 安装了 lzo 库
(使用 make install
到自定义目录)。
然后我将所有 LZO 库文件和 GPL 压缩文件(包括 native/)复制到 $HADOOP_HOME/lib/ 和 $HBASE_HOME/lib
然后我使用以下命令运行 bin/hbase org.apache.hadoop.hbase.util.CompressionTest以下脚本:
setenv CLASSPATH_HBASEI `ls ${HBASE_HOME}/*.jar |& awk '{printf( ":%s", $1 );}'`
setenv CLASSPATH_HBASELIBI `ls ${HBASE_HOME}/lib/*.jar |& awk '{printf( ":%s", $1 );}'`
setenv CLASSPATH_LZO $HBASE_HOME/lib/native/liblzo2.so
setenv CLASSPATH ${CLASSPATH_HBASEI}${CLASSPATH_HBASELIBI}
setenv LD_LIBRARY_PATH64 $HBASE_HOME/lib/native
#setenv LD_LIBRARY $HBASE_HOME/lib/native
ls -l $LD_LIBRARY_PATH64
set JAVA=$JAVA_HOME/bin/java
set JAVA_PLATFORM=`CLASSPATH=${CLASSPATH};${JAVA} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
echo JP=$JAVA_PLATFORM
set JAVA_LIBRARY_PATH=${HBASE_HOME}/lib/native/${JAVA_PLATFORM}
echo
echo java_lib_path---
echo
echo $JAVA_LIBRARY_PATH
cd $HBASE_HOME
./bin/hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://SERVER:PORT/COMPRESSION_TEST_RUNNER.sh lzo
它正在生成
INFO lzo.GPLNativeCodeLoader: Loaded native gpl library
WARN lzo.LzoCompressor: java.lang.UnsatisfiedLinkError: Cannot load liblzo2.so.2 (liblzo2.so.2: cannot open shared object file: No such file or directory)!
ERROR lzo.LzoCodec: Failed to load/initialize native-lzo library
java.lang.RuntimeException: native-lzo library not available
at com.hadoop.compression.lzo.LzoCodec.getCompressorType(LzoCodec.java:135)
at org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:98)
at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm.getCompressor(Compression.java:200)
at org.apache.hadoop.hbase.io.hfile.HFile$Writer.getCompressingStream(HFile.java:397)
at org.apache.hadoop.hbase.io.hfile.HFile$Writer.newBlock(HFile.java:383)
at org.apache.hadoop.hbase.io.hfile.HFile$Writer.checkBlockBoundary(HFile.java:354)
at org.apache.hadoop.hbase.io.hfile.HFile$Writer.append(HFile.java:536)
at org.apache.hadoop.hbase.io.hfile.HFile$Writer.append(HFile.java:515)
at org.apache.hadoop.hbase.util.CompressionTest.main(CompressionTest.java:126)
我尝试在禁用 i386 汇编代码的 x86_64-pc 中重建 LZO 库,但仍然导致错误。
如果有任何建议,我将不胜感激。
I sincerely thank you for reading my post.
I'm trying to install LZO 2.03 compression codec on HBase on my server (running Xeon CPUs).
I'm currently running Hadoop 0.20.1 with HBase 0.90.2.
I've followed the guidelines from http://wiki.apache.org/hadoop/UsingLzoCompression. And I downloaded the LZO native connector (Hadoop-GPL-Compression) from http://code.google.com/p/hadoop-gpl-compression/.
I installed the lzo library using ./configure --prefix=/home/ckwon/wks/test/lzo_lib_x64 --enable-shared --disable-asm --build=x86_64-pc-linux-gnu
(with make install
to a custom directory).
And then I copied all of LZO library files and GPL-Compression files (including native/) to $HADOOP_HOME/lib/ and $HBASE_HOME/lib
Then I ran the bin/hbase org.apache.hadoop.hbase.util.CompressionTest with the following script:
setenv CLASSPATH_HBASEI `ls ${HBASE_HOME}/*.jar |& awk '{printf( ":%s", $1 );}'`
setenv CLASSPATH_HBASELIBI `ls ${HBASE_HOME}/lib/*.jar |& awk '{printf( ":%s", $1 );}'`
setenv CLASSPATH_LZO $HBASE_HOME/lib/native/liblzo2.so
setenv CLASSPATH ${CLASSPATH_HBASEI}${CLASSPATH_HBASELIBI}
setenv LD_LIBRARY_PATH64 $HBASE_HOME/lib/native
#setenv LD_LIBRARY $HBASE_HOME/lib/native
ls -l $LD_LIBRARY_PATH64
set JAVA=$JAVA_HOME/bin/java
set JAVA_PLATFORM=`CLASSPATH=${CLASSPATH};${JAVA} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
echo JP=$JAVA_PLATFORM
set JAVA_LIBRARY_PATH=${HBASE_HOME}/lib/native/${JAVA_PLATFORM}
echo
echo java_lib_path---
echo
echo $JAVA_LIBRARY_PATH
cd $HBASE_HOME
./bin/hbase org.apache.hadoop.hbase.util.CompressionTest hdfs://SERVER:PORT/COMPRESSION_TEST_RUNNER.sh lzo
And it's generating
INFO lzo.GPLNativeCodeLoader: Loaded native gpl library
WARN lzo.LzoCompressor: java.lang.UnsatisfiedLinkError: Cannot load liblzo2.so.2 (liblzo2.so.2: cannot open shared object file: No such file or directory)!
ERROR lzo.LzoCodec: Failed to load/initialize native-lzo library
java.lang.RuntimeException: native-lzo library not available
at com.hadoop.compression.lzo.LzoCodec.getCompressorType(LzoCodec.java:135)
at org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:98)
at org.apache.hadoop.hbase.io.hfile.Compression$Algorithm.getCompressor(Compression.java:200)
at org.apache.hadoop.hbase.io.hfile.HFile$Writer.getCompressingStream(HFile.java:397)
at org.apache.hadoop.hbase.io.hfile.HFile$Writer.newBlock(HFile.java:383)
at org.apache.hadoop.hbase.io.hfile.HFile$Writer.checkBlockBoundary(HFile.java:354)
at org.apache.hadoop.hbase.io.hfile.HFile$Writer.append(HFile.java:536)
at org.apache.hadoop.hbase.io.hfile.HFile$Writer.append(HFile.java:515)
at org.apache.hadoop.hbase.util.CompressionTest.main(CompressionTest.java:126)
I've tried rebuilding the LZO library in x86_64-pc w/ i386 assembly code disabled, but is still causing the error.
I'd be grateful for any suggestions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在主服务器和从服务器上安装本机 LZO 库。例如在 Ubuntu 上
如果您在遵循 Cloudera 设置说明,尝试将 libgplcompression* 文件复制到 Hadoop lib 文件夹中。在 Ubuntu 上,假设您遵循 Cloudera 设置说明,这将是:
Install the native LZO libraries on both the master and slave servers. E.g. on Ubuntu
If you have problems after following the Cloudera setup instructions, try copying the libgplcompression* files into your Hadoop lib folder. On Ubuntu, assuming you followed the Cloudera setup instructions, this would be: