带有子进程的 hadoop 集群上的 mapreduce 作业失败,代码为 1

问题描述

我有一个 Hadoop 3.2.2 集群,其中包含 1 个名称节点/资源管理器和 3 个数据节点/节点管理器。

这是我的纱线站点配置

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>bd-1</value>
</property>

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

当我运行示例作业时

python mr_word_count.py -r hadoop -v hdfs:///user/hduser/testme.txt

我有这个错误

Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess Failed with code 1
    at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:326)
    at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:539)
    at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130)

到目前为止我做了什么:

  • job 运行本地 python python mr_word_count.py testme.txt
  • #!/usr/bin/python# -*-coding:utf-8 -* 添加到脚本头
  • chmod a+x mr_word_count.px
  • 将 master 作为单节点实例启动,然后作业开始工作!
  • 检查登录webUI,没有其他信息可以找到

我可以在 .mrjob.conf 中定义 python bin 但随后错误代码更改为 126

在控制台中我看到 map 100% reduce 100% 在 WebUI 中,我还看到作业正在处理,作业消耗了 cpu 和内存。

从 4 天开始,我正在谷歌搜索和阅读 stackoverflow/haddop 文档很多小时,但没有结果。有什么想法可能出问题了吗?

解决方法

我忘记在所有节点上安装 mr_job...

在所有节点上运行这个修复了问题: pip3 install MRJob