如何在Hadoop Streaming中查看Python MapReduce任务的报错信息?
查看Hadoop Streaming中Python代码的报错信息
下面是几种实用方案:
拉取YARN任务日志
Hadoop会将每个任务的运行日志存在集群节点上,通过YARN命令就能获取:- 执行
yarn application -list找到你的应用ID(ApplicationId) - 再执行
yarn logs -applicationId <你的应用ID>导出完整日志,搜索Traceback或者stderr关键字,就能找到Python代码的具体报错信息,比如拼写错误、索引越界的详细栈追踪。
- 执行
重定向Python错误输出到标准输出
在mapper.py和reducer.py的开头添加代码,把stderr重定向到stdout,这样Hadoop会将Python的错误信息和正常输出一同收集:import sys sys.stderr = sys.stdout也可以用异常捕获打印详细错误:
import traceback import sys try: # 你的核心业务代码 pass except Exception: traceback.print_exc() sys.exit(1)本地模拟Hadoop流程测试脚本
提交集群前先在本地测试,提前排查问题:- 测试mapper:
cat input.txt | python mapper.py - 测试reducer:
cat input.txt | python mapper.py | python reducer.py
这样能快速发现语法错误、逻辑异常等问题,不用等到集群运行才报错。
- 测试mapper:
通过Hadoop Web UI查看任务日志
打开集群的ResourceManager Web UI(默认端口8088),找到你的应用,进入任务详情页,查看对应mapper或reducer任务的stderr日志,里面直接显示Python脚本的报错内容。
内容的提问来源于stack exchange,提问作者Chol
相关产品推荐
相关产品推荐

