2017-01-16 26 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>