节点1: hadoop2.5.2 RedhatLinux.el6 64bit
构建64位本机库,它正在工作
节点2: hadoop2.5.2 RedhatLinux.el5 32bit
构建32位本机库,它正在工作
将map reduce任务作为单个节点运行时(带压缩)
作为多节点也正在工作(没有压缩)
但是作为带压缩的多节点,它无法工作......
映射任务仅在其中一个节点中完成(节点1中的somtimes,在node2中的某个时间),在其他节点中,它失败并出现错误并且作业失败。
错误:java.io.IOException:Spill失败了 org.apache.hadoop.mapred.MapTask $ MapOutputBuffer.checkSpillException(MapTask.java:1535) 在 。 。引起:java.lang.RuntimeException:本机lz4库没有 可在 org.apache.hadoop.io.compress.Lz4Codec.getCompressorType(Lz4Codec.java:124) 在 org.apache.hadoop.io.compress.CodecPool.getCompressor(CodecPool.java:148) 在
我试过
<name>mapreduce.admin.user.env</name>
<value>LD_LIBRARY_PATH=$HADOOP_HOME/lib/native</value>
mapred-site.xml 中的但仍然没有工作......
请提出解决方案......
答案 0 :(得分: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>
答案 1 :(得分:0)
在引发异常的计算机中启用hadoop的调试日志。
重启hadoop进程,发帖表明你应该能够根据NativeCodeLoader
的日志找出原因库未加载的原因。
您可以使用以下命令来验证是否加载了本机库。
hadoop checknative -a