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

Hadoop Error Code 127排查:本地MapReduce正常集群运行失败

Hadoop MapReduce Error Code 127: /usr/bin/env: 'python': No such file or directory

问题场景

本地运行mapper和reducer代码可得到预期输出,但在虚拟机上首次运行Hadoop Job时返回Error Code 127。查看Hadoop日志,多数日志提示/usr/bin/env: 'python': No such file or directory,系统已安装Python,但问题仍存在。终端运行截图显示任务执行时的错误状态,其中一份日志包含log4j警告信息:

Sep 12, 2023 7:58:26 PM com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory register INFO: Registering org.apache.hadoop.mapreduce.v2.app.webapp.JAXBContextResolver as a provider class
Sep 12, 2023 7:58:26 PM com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory register INFO: Registering org.apache.hadoop.yarn.webapp.GenericExceptionHandler as a provider class
Sep 12, 2023 7:58:26 PM com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory register INFO: Registering org.apache.hadoop.mapreduce.v2.app.webapp.AMWebServices as a root resource class
Sep 12, 2023 7:58:26 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate INFO: Initiating Jersey application, version 'Jersey: 1.19 02/11/2015 03:25 AM'
Sep 12, 2023 7:58:26 PM com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory getComponentProvider INFO: Binding org.apache.hadoop.mapreduce.v2.app.webapp.JAXBContextResolver to GuiceManagedComponentProvider with the scope "Singleton"
Sep 12, 2023 7:58:26 PM com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory getComponentProvider INFO: Binding org.apache.hadoop.yarn.webapp.GenericExceptionHandler to GuiceManagedComponentProvider with the scope "Singleton"
Sep 12, 2023 7:58:26 PM com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory getComponentProvider INFO: Binding org.apache.hadoop.mapreduce.v2.app.webapp.AMWebServices to GuiceManagedComponentProvider with the scope "PerRequest"
log4j:WARN No appenders could be found for logger (org.apache.hadoop.mapreduce.v2.app.MRAppMaster).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

注:最后一份日志为空。

问题原因

核心原因是Hadoop执行MapReduce任务时,无法通过/usr/bin/env python找到Python解释器,常见情况包括:

  • 系统仅安装了Python3,未创建python软链接指向python3,导致/usr/bin/env找不到python命令;
  • mapper/reducer脚本的shebang行使用#!/usr/bin/env python,但系统环境中无对应命令;
  • Hadoop运行时的环境变量未包含Python解释器的路径。

另外,日志中的log4j警告属于日志配置问题,与当前Error Code 127无关,不会影响任务执行,可后续再处理。

解决方案

方案1:创建Python软链接

在虚拟机终端执行以下命令,将python3软链接为python:

sudo ln -s /usr/bin/python3 /usr/bin/python

执行后验证:which python应返回/usr/bin/python。

方案2:修改脚本shebang行

直接修改mapper和reducer脚本的第一行,将:

#!/usr/bin/env python

替换为:

#!/usr/bin/env python3

确保脚本有执行权限:

chmod +x mapper.py reducer.py

方案3:配置Hadoop环境变量

编辑Hadoop的hadoop-env.sh文件(通常位于$HADOOP_HOME/etc/hadoop/目录),添加Python路径到环境变量:

export PATH=$PATH:/usr/bin

(若Python安装在其他路径,替换为实际路径)

内容的提问来源于stack exchange,提问作者Ganu Matta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:57:21