Streaming中subprocess failed with code 错误

本文记录了解决使用Python执行Hadoop Streaming时遇到的子进程错误问题,发现原因是集群环境中Python脚本执行路径不一致。通过将脚本路径声明为`#!/usr/bin/env python`并确保其位于`/usr/bin`目录下,成功解决了环境问题导致的错误。此解决方案适用于遇到类似错误码的用户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


这两天在执行hadoop streaming (用的脚本是python),一直出现subprocess failed with code 这个错误,看了streaming 源码,上面写的是系统抛出的异常,但是怎么也搞不明白为什么系统会抛出异常呢?百思不得其解啊!看了http://taoo.iteye.com/blog/1486650这个博客给我了一点提醒,原来是python问题,集群中环境不一致导致的。
把这个问题记下来吧,以备以后查阅。
hadoop streaming pyhton 时候出现:subprocess failed with code 127,code 后面错误码不管是什么,都是 脚本环境的问题
        在python脚本里面声明的:#!/usr/bin/env python,这里声明了位置,所以必须要放到 /usr/bin 下面,才能有效。
         python 执行程序必须放到 /usr/bin 下面,在环境变量的其他位置不管用
/usr/bin/env: python: No such file or directory
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 127
        at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)
        at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:576)
        at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:135)
        at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
        at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
        at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
        at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
        at org.apache.hadoop.mapred.Child.main(Child.java:249)
这个主要是环境存在的问题,code后面的错误不管是几。都是streaming中执行某个脚本导致的。
[root@master exp3]# hadoop jar /export/servers/hadoop-3.4.0/share/hadoop/tools/lib/hadoop-streaming-3.4.0.jar -D mapreduce.job.reduces=1 -D stream.map.output.field.separator=\t -D stream.num.map .output.key.fields=1 -mapper "python /export/data/chap-5/exp3/Mapper.py" -reducer "python /export/data/chap-5/exp3/Reducer.py" -input /exp1/input -output /exp1/output_$(date +%s) -file ./Mapper.py -file ./Reducer.py 2025-05-31 16:24:06,054 WARN streaming.StreamJob: -file option is deprecated, please use generic option -files instead. packageJobJar: [./Mapper.py, ./Reducer.py, /tmp/hadoop-unjar2796039736802025778/] [] /tmp/streamjob2856802959225773798.jar tmpDir=null 2025-05-31 16:24:06,522 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at master/192.168.24.67:8032 2025-05-31 16:24:06,621 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at master/192.168.24.67:8032 2025-05-31 16:24:06,844 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /tmp/hadoop-yarn/staging/root/.staging/job_1748671547381_0012 2025-05-31 16:24:07,087 INFO mapred.FileInputFormat: Total input files to process : 1 2025-05-31 16:24:07,123 INFO mapreduce.JobSubmitter: number of splits:2 2025-05-31 16:24:07,218 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1748671547381_0012 2025-05-31 16:24:07,218 INFO mapreduce.JobSubmitter: Executing with tokens: [] 2025-05-31 16:24:07,334 INFO conf.Configuration: resource-types.xml not found 2025-05-31 16:24:07,334 INFO resource.ResourceUtils: Unable to find 'resource-types.xml'. 2025-05-31 16:24:07,379 INFO impl.YarnClientImpl: Submitted application application_1748671547381_0012 2025-05-31 16:24:07,404 INFO mapreduce.Job: The url to track the job: http://master:8088/proxy/application_1748671547381_0012/ 2025-05-31 16:24:07,405 INFO mapreduce.Job: Running job: job_1748671547381_0012 2025-05-31 16:24:13,507 INFO mapreduce.Job: Job job_1748671547381_0012 running in uber mode : false 2025-05-31 16:24:13,508 INFO mapreduce.Job: map 0% reduce 0% 2025-05-31 16:24:19,780 INFO mapreduce.Job: Task Id : attempt_1748671547381_0012_m_000001_0, Status : FAILED 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:129) at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:466) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:350) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:178) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1953) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:172) 2025-05-31 16:24:19,816 INFO mapreduce.Job: Task Id : attempt_1748671547381_0012_m_000000_0, Status : FAILED 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:129) at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:466) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:350) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:178) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1953) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:172) 2025-05-31 16:24:23,906 INFO mapreduce.Job: Task Id : attempt_1748671547381_0012_m_000001_1, Status : FAILED 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:129) at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:466) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:350) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:178) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1953) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:172) 2025-05-31 16:24:23,912 INFO mapreduce.Job: Task Id : attempt_1748671547381_0012_m_000000_1, Status : FAILED 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:129) at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:466) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:350) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:178) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1953) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:172) 2025-05-31 16:24:27,978 INFO mapreduce.Job: Task Id : attempt_1748671547381_0012_m_000001_2, Status : FAILED 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:129) at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:466) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:350) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:178) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1953) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:172) 2025-05-31 16:24:29,025 INFO mapreduce.Job: Task Id : attempt_1748671547381_0012_m_000000_2, Status : FAILED 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:129) at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61) at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:466) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:350) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:178) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1953) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:172) 2025-05-31 16:24:33,127 INFO mapreduce.Job: map 50% reduce 100% 2025-05-31 16:24:34,137 INFO mapreduce.Job: map 100% reduce 100% 2025-05-31 16:24:34,145 INFO mapreduce.Job: Job job_1748671547381_0012 failed with state FAILED due to: Task failed task_1748671547381_0012_m_000001 Job failed as tasks failed. failedMaps:1 failedReduces:0 killedMaps:0 killedReduces: 0 2025-05-31 16:24:34,197 INFO mapreduce.Job: Counters: 14 Job Counters Failed map tasks=7 Killed map tasks=1 Killed reduce tasks=1 Launched map tasks=8 Other local map tasks=6 Data-local map tasks=2 Total time spent by all maps in occupied slots (ms)=23810 Total time spent by all reduces in occupied slots (ms)=0 Total time spent by all map tasks (ms)=23810 Total vcore-milliseconds taken by all map tasks=23810 Total megabyte-milliseconds taken by all map tasks=24381440 Map-Reduce Framework CPU time spent (ms)=0 Physical memory (bytes) snapshot=0 Virtual memory (bytes) snapshot=0 2025-05-31 16:24:34,197 ERROR streaming.StreamJob: Job not successful! Streaming Command Failed!
最新发布
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值