运行 hadoop 流和 mapreduce 作业:PipeMapRed.waitOutputThreads():子进程失败,代码为 127

Posted

技术标签:

【中文标题】运行 hadoop 流和 mapreduce 作业:PipeMapRed.waitOutputThreads():子进程失败,代码为 127【英文标题】:Running a hadoop streaming and mapreduce job: PipeMapRed.waitOutputThreads() : subprocess failed with code 127 【发布时间】:2019-03-25 02:00:19 【问题描述】:

我正在尝试在我自己的 Hadoop 集群上运行它。我使用以下命令运行该作业。

hadoop jar hadoop-streaming-3.1.0.jar -mapper mapper.py -reducer reducer.py -file mapper.py -file reducer.py -input wiki.xml -output output4

但出现以下错误!

2018-10-20 16:05:50,021 WARN streaming.StreamJob:-file 选项已弃用,请改用通用选项 -files。 packageJobJar: [mapper.py, reducer.py, /tmp/hadoop-unjar707072106784045009/] [] /tmp/streamjob4878270244056389381.jar tmpDir=null 2018-10-20 16:05:51,845 INFO client.RMProxy: 在 /127.0.0.1:8032 连接到 ResourceManager 2018-10-20 16:05:52,512 INFO client.RMProxy: 在 /127.0.0.1:8032 连接到 ResourceManager 2018-10-20 16:05:53,503 INFO mapreduce.JobResourceUploader:禁用路径的擦除编码:/tmp/hadoop-yarn/staging/anubhav/.staging/job_1540029454250_0014 2018-10-20 16:05:56,044 INFO mapred.FileInputFormat:要处理的输入文件总数:1 2018-10-20 16:05:56,431 信息 mapreduce.JobSubmitter:拆分数:2 2018-10-20 16:05:56,496 INFO Configuration.deprecation: yarn.resourcemanager.system-metrics-publisher.enabled 已弃用。相反,使用 yarn.system-metrics-publisher.enabled 2018-10-20 16:05:56,686 INFO mapreduce.JobSubmitter:提交作业令牌:job_1540029454250_0014 2018-10-20 16:05:56,688 INFO mapreduce.JobSubmitter:使用令牌执行:[] 2018-10-20 16:05:57,125 INFO conf.Configuration: resource-types.xml 未找到 2018-10-20 16:05:57,125 INFO resource.ResourceUtils:找不到“resource-types.xml”。 2018-10-20 16:05:57,550 INFO impl.YarnClientImpl:提交的应用程序 application_1540029454250_0014 2018-10-20 16:05:57,627 INFO mapreduce.Job:跟踪作业的网址:http://anubhav-Inspiron-3542:8088/proxy/application_1540029454250_0014/ 2018-10-20 16:05:57,629 信息 mapreduce.Job:正在运行的作业:job_1540029454250_0014 2018-10-20 16:06:07,874 INFO mapreduce.Job: Job_1540029454250_0014 在 uber 模式下运行: false 2018-10-20 16:06:07,890 信息 mapreduce.Job:地图 0% 减少 0% 2018-10-20 16:06:16,052 信息 mapreduce.Job:任务 ID:尝试_1540029454250_0014_m_000000_0,状态:失败 错误:java.lang.RuntimeException:PipeMapRed.waitOutputThreads():子进程失败,代码为 127 在 org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:325) 在 org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:538) 在 org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 在 org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 在 org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:465) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:349) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1682) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168) 2018-10-20 16:06:16,079 信息 mapreduce.Job:任务 ID:尝试_1540029454250_0014_m_000001_0,状态:失败 错误:java.lang.RuntimeException:PipeMapRed.waitOutputThreads():子进程失败,代码为 127 在 org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:325) 在 org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:538) 在 org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 在 org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 在 org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:465) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:349) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1682) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168) 2018-10-20 16:06:26,193 信息 mapreduce.Job:任务 ID:尝试_1540029454250_0014_m_000000_1,状态:失败 错误:java.lang.RuntimeException:PipeMapRed.waitOutputThreads():子进程失败,代码为 127 在 org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:325) 在 org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:538) 在 org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 在 org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 在 org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:465) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:349) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1682) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168) 2018-10-20 16:06:27,203 信息 mapreduce.Job:任务 ID:尝试_1540029454250_0014_m_000001_1,状态:失败 错误:java.lang.RuntimeException:PipeMapRed.waitOutputThreads():子进程失败,代码为 127 在 org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:325) 在 org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:538) 在 org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 在 org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 在 org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:465) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:349) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1682) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168) 2018-10-20 16:06:37,310 信息 mapreduce.Job:任务 ID:尝试_1540029454250_0014_m_000000_2,状态:失败 错误:java.lang.RuntimeException:PipeMapRed.waitOutputThreads():子进程失败,代码为 127 在 org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:325) 在 org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:538) 在 org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 在 org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 在 org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:465) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:349) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1682) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168) 2018-10-20 16:06:37,314 信息 mapreduce.Job:任务 ID:尝试_1540029454250_0014_m_000001_2,状态:失败 错误:java.lang.RuntimeException:PipeMapRed.waitOutputThreads():子进程失败,代码为 127 在 org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:325) 在 org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:538) 在 org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:130) 在 org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) 在 org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 在 org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:465) 在 org.apache.hadoop.mapred.MapTask.run(MapTask.java:349) 在 org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174) 在 java.security.AccessController.doPrivileged(本机方法) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1682) 在 org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168) 2018-10-20 16:06:49,429 INFO mapreduce.Job:地图 100% 减少 100% 2018-10-20 16:06:51,458 INFO mapreduce.Job:作业 job_1540029454250_0014 失败,状态为 FAILED,原因是:任务失败 task_1540029454250_0014_m_000000 由于任务失败,作业失败。 failedMaps:1 failedReduces:0killedMaps:0killedReduces:0 2018-10-20 16:06:51,571 信息 mapreduce.Job:计数器:14 工作计数器 地图任务失败=7 杀死地图任务=1 杀死减少任务=1 启动地图任务=8 其他本地地图任务=6 数据本地地图任务=2 所有地图在占用槽中花费的总时间(ms)=105898 所有reduce在占用槽中花费的总时间(ms)=0 所有map任务花费的总时间(ms)=52949 所有地图任务花费的总 vcore-毫秒=52949 所有地图任务占用的总兆字节毫秒数=162659328 Map-Reduce 框架 花费的 CPU 时间(毫秒)=0 物理内存(字节)快照=0 虚拟内存(字节)快照=0 2018-10-20 16:06:51,571 错误流。StreamJob:作业不成功! 流式传输命令失败!

我也加了#! /usr/bin/python 在我的两个文件 mapper.py 和 reducer.py 的开头

【问题讨论】:

【参考方案1】:

最后我通过改变解决了这个问题

#! /usr/bin/python

#!/usr/bin/env python

【讨论】:

【参考方案2】:

如果你使用python3:

#!/usr/bin/env python3

【讨论】:

【参考方案3】:

您可能正在 python 2 中运行 python 3 命令(例如字符串格式)

【讨论】:

以上是关于运行 hadoop 流和 mapreduce 作业:PipeMapRed.waitOutputThreads():子进程失败,代码为 127的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop之 - 剖析 MapReduce 作业的运行机制(MapReduce 2)

如何在Hortonworks沙箱Hadoop平台中运行mapreduce作业

hadoop mapreduce的日志输出到哪里

Hadoop MapReduce 1.x 工作原理

如何从 Eclipse 调试 hadoop mapreduce 作业?

Hadoop MapReduce 1.x 工作原理