2017-01-16 25 views
0

節點1:hadoop2.5.2 RedhatLinux.el6 64bit 構建64位機庫,它的工作在2節點羣集中使用壓縮時,Hadoop映射任務失敗。但是,這兩個節點正常工作時爲單節點運行

節點2:hadoop2.5.2 RedhatLinux.el5 32bit 構建32位本機庫,它的運行圖減少工作時

作爲單節點工作(與壓縮)

作爲多節點也它工作(沒有壓縮)

但與壓縮多節點它不工作....

地圖任務只能在節點之一,另一個節點完成(somtimes在節點1,在某個節點2)它失敗,錯誤和就業得到了失敗。

Error: java.io.IOException: Spill failed at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.checkSpillException(MapTask.java:1535) at . . Caused by: java.lang.RuntimeException: native lz4 library not available at org.apache.hadoop.io.compress.Lz4Codec.getCompressorType(Lz4Codec.java:124) at org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:148) at

我試圖

<name>mapreduce.admin.user.env</name> 
<value>LD_LIBRARY_PATH=$HADOOP_HOME/lib/native</value> 

mapred-site.xml中 但仍然沒有工作...

請提出一個解決辦法...

回答

0

啓用調試日誌對於引發異常的機器中的hadoop。 重新啓動hadoop進程,你應該能夠根據NativeCodeLoader的日誌找出原因庫沒有加載的原因。

您可以使用下面的命令來驗證本機庫是否已加載。

hadoop checknative -a 
+0

節點1:hadoop的checknative -a 2017年1月16日14:02:09041 INFO [主要] bzip2.Bzip2Factory(Bzip2Factory.java:isNativeBzip2Loaded(70)) - 成功加載&初始化的本機的bzip2庫系統-native 2017-01-16 14:02:09,049 INFO [main] zlib.ZlibFactory(ZlibFactory.java:(49)) - 成功加載並初始化native-zlib庫 本機庫檢查: hadoop:true/home /ruleuser/hadoop/hadoop-2.5.2/lib/native/libhadoop.so.1.0.0 zlib:true /usr/lib/libz.so.1 snappy:true /usr/lib/libsnappy.so.1 lz4:true revision:99 bzip2 :true在節點2中的/usr/lib/libbz2.so.1 – Ram

+0

也加載了所有本機庫。 它適用於單節點,但問題出現在多節點中 – Ram

+0

在多節點中部署時,兩節點中的「hadoop checknative -a」命令的輸出是什麼。 ?它們是否相同?在節點 –

1

添加在Hadoop的節點,在該作業正在提交解決了這個問題的mapred-site.xml中這些屬性。

<property> 
      <name>yarn.app.mapreduce.am.admin.user.env</name> 
      <value>LD_LIBRARY_PATH={{HADOOP_COMMON_HOME}}/lib/native</value> 
    </property> 
    <property> 
      <name>yarn.app.mapreduce.am.env</name> 
      <value>LD_LIBRARY_PATH={{HADOOP_COMMON_HOME}}/lib/native</value> 
    </property> 
    <property> 
      <name>mapreduce.admin.user.env</name> 
      <value>LD_LIBRARY_PATH={{HADOOP_COMMON_HOME}}/lib/native</value> 
    </property>