mapreduce—在2节点集群中使用压缩时,hadoopMap任务失败但当作为单个节点运行时,两个节点都可以正常工作

umuewwlo  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(384)

节点1: hadoop2.5.2 RedhatLinux.el6 64bit 建立64位本机库,它正在工作
节点2: hadoop2.5.2 RedhatLinux.el5 32bit 建立32位本机库,它的工作
当以单个节点运行map reduce任务时,它可以工作(使用压缩)
作为多节点,它也在工作(没有压缩)
但作为多节点压缩,它不起作用。。。。
Map任务仅在其中一个节点(node1中的somtimes,node2中的sometimes)中完成,而在另一个节点中,Map任务失败,出现错误,作业失败。
错误:java.io.ioexception:spill在org.apache.hadoop.mapred.maptask$mapoutputbuffer.checkspillexception(maptask)失败。java:1535)在。原因:java.lang.runtimeexception:org.apache.hadoop.io.compress.lz4codec.getcompressortype(lz4codec)上的本机lz4库不可用。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中,但仍不工作。。。
请提出一个解决方案。。。

omtl5h9j

omtl5h9j1#

在提交作业的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>
nhn9ugyo

nhn9ugyo2#

在引发异常的计算机中为hadoop启用调试日志。重新启动hadoop进程,根据日志发布您应该能够弄清楚 NativeCodeLoader 以及本机库未加载的原因。
您可以使用下面的命令来验证是否加载了本机库。

hadoop checknative -a

相关问题