在2节点集群中使用压缩时Hadoop映射任务失败。但是,作为单个节点运行时,两个节点都工作正常

时间:2017-01-16 08:19:39

标签: hadoop mapreduce compression

节点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 中的

但仍然没有工作......

请提出解决方案......

2 个答案:

答案 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