2011-07-08 9 views
2

私のポストを読んでくれてありがとう。LZO用のCompressionTestが失敗します

私のサーバー(Xeon CPUを実行している)でHBaseにLZO 2.03圧縮コーデックをインストールしようとしています。 現在HBase 0.90.2でHadoop 0.20.1を実行しています。

私はhttp://wiki.apache.org/hadoop/UsingLzoCompressionのガイドラインに従っています。そして私はhttp://code.google.com/p/hadoop-gpl-compression/からLZOネイティブコネクタ(Hadoop-GPL-Compression)をダウンロードしました。

私は(カスタムディレクトリにmake install付き)./configure --prefix=/home/ckwon/wks/test/lzo_lib_x64 --enable-shared --disable-asm --build=x86_64-pc-linux-gnu

を使用してLZOライブラリをインストール。

そして、私は$ HADOOP_HOMEに(/ネイティブ含む)LZOライブラリファイルとGPL-圧縮ファイルのすべてをコピー/ libに/と$ HBASE_HOME/libに

その後

私はビンを走った/ HBaseのorg.apache.hadoop

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 

そして、それは私がi386のアセンブリコードDISAのw/x86_64の-PCで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) 

を生成します:次のスクリプトで.hbase.util.CompressionTest出血したが、依然としてエラーを引き起こしている。

ご提案いただきありがとうございます。

+0

共有オブジェクトをlib/native /フォルダに入れましたか? –

+0

共有オブジェクトの構築にも問題があります。それらが生成されたことを確認しましたか? – schmmd

答えて

2

ネイティブLZOライブラリをマスターサーバーとスレーブサーバーの両方にインストールします。例えば。あなたがCloudera setup instructionsに従った後に問題が発生した場合はUbuntuの

sudo apt-get install liblzo2-dev 

に、あなたのHadoopのlibフォルダにlibgplcompression *ファイルをコピーしてみてください。 Ubuntuでは、Clouderaの設定手順に従えば、これは次のようになります:

sudo cp /usr/local/hadoop/lib/native/Linux-amd64-64/lib/libgplcompression.* \ 
    /usr/lib/hadoop/lib/native/ 
関連する問題