You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hadoop Streaming词频任务失败求助:PipeMapRed子进程报错code 2

解决Hadoop Streaming词频统计任务的PipeMapRed.waitOutputThreads()错误

这个错误码2通常是Python脚本执行失败导致的,按以下步骤排查:

  • 检查脚本的路径、权限与shebang行

    • 确保/home/hadoop/mapper.py和/home/hadoop/reducer.py在所有Hadoop节点(包括DataNode)上都存在,Streaming会将脚本分发到各节点执行,仅主节点存在会报错。
    • 给脚本添加执行权限:
      chmod +x /home/hadoop/mapper.py /home/hadoop/reducer.py
      
    • 在两个脚本的第一行添加shebang,指定Python解释器路径:
      #!/usr/bin/env python3
      
      若节点上Python3的绝对路径不同(比如/usr/bin/python3),直接写该路径更稳妥。
  • 本地验证脚本功能

    • 单独测试mapper:
      echo "hello world hello test" | python3 /home/hadoop/mapper.py
      
      预期输出每行一个拆分后的单词,若报错则说明mapper有语法或逻辑问题。
    • 测试完整流程:
      echo "hello world hello test" | python3 /home/hadoop/mapper.py | sort | python3 /home/hadoop/reducer.py
      
      预期输出正确的词频统计结果,若失败直接排查reducer的问题。
    • 检查脚本语法:
      python3 -m py_compile /home/hadoop/mapper.py /home/hadoop/reducer.py
      
      有语法错误会直接提示,修复后再重新提交任务。
  • 确认集群节点的Python环境

    • 所有DataNode节点必须安装Python3,且python3命令能正常执行。可以在任意DataNode上执行which python3获取绝对路径,替换Streaming命令中的python3,避免因环境变量差异导致找不到解释器。
  • 检查HDFS路径问题

    • 确认输入路径/user/input.txt存在且不为空:
      hdfs dfs -ls /user/input.txt
      
    • Hadoop不允许输出目录已存在,执行任务前先删除旧输出目录:
      hdfs dfs -rm -r /output2
      
  • 查看详细日志定位具体错误

    • 登录ResourceManager Web UI(默认端口8088),找到失败的任务,查看对应Container的日志,里面会包含Python脚本的具体报错信息(如权限拒绝、模块缺失、输入输出错误等),这是精准定位问题的核心依据。

内容的提问来源于stack exchange,提问作者I211381 Eeman Ijaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:00:16