hadoop运行jar包出现错误代码为127的解决方案_Exit code: 127

本文介绍了解决Hadoop程序运行中出现的错误代码127的问题,该错误源于未正确配置Java环境变量路径。通过编辑yarn-env.sh文件并设置JAVA_HOME变量指向正确的Java安装目录来解决。
部署运行你感兴趣的模型镜像

今天在运行程序的时候新发现的一个错误(Exit code: 127),下面提供解决方案,希望能帮助大家。下面是错误的信息:

Job job_1601252515583_0001 failed with state FAILED due to: Application application_1601252515583_0001 failed 2 times due to AM Container for appattempt_1601252515583_0001_000002 exited with  exitCode: 127
Failing this attempt.Diagnostics: [2020-09-28 08:26:44.435]Exception from container-launch.
Container id: container_1601252515583_0001_02_000001
Exit code: 127

[2020-09-28 08:26:44.440]Container exited with a non-zero exit code 127. Error file: prelaunch.err.
Last 4096 bytes of prelaunch.err :
Last 4096 bytes of stderr :
/bin/bash: /bin/java: No such file or directory

出现这个错误的原因就是,没有在etc/hadoop/yarn-env.sh中配置java的环境变量的路径。

编辑yarn-env.sh文件,在文件内添加如下JAVA_HOME为信息即可。

export $JAVA_HOME=/usr/local/javajdk

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

### Spark 报错 `ExitCodeException exitCode=127` 原因及解决方案 `ExitCodeException exitCode=127` 是 Spark 应用程序在集群模式下执行过程中常见的错误之一,通常表示操作系统无法找到或执行某个指定的命令或脚本。exit code `127` 来自 Unix/Linux 系统的错误码,代表“Command not found”[^3]。 #### 常见原因 1. **环境变量缺失或配置错误** Spark 应用程序在 YARN 集群模式下运行时,执行器容器会尝试执行一些系统命令(如 `hadoop`, `spark-submit` 或自定义脚本)。若相关命令未在容器的 PATH 环境变量中定义,或环境变量未正确传播,将导致命令无法找到[^3]。 2. **资源发现脚本配置错误** 若配置了自定义资源(如 GPU)并使用了资源发现脚本(Resource Discovery Script),而脚本路径错误、权限不足或脚本本身不存在,也可能导致 exit code 127 错误[^2]。 3. **缺少必要的二进制文件** 在 Windows 环境下运行 Hadoop 或 Spark 时,若未正确配置 `hadoop.dll` 或 `winutils.exe`,可能导致某些命令无法执行,从而引发类似错误。虽然此情况通常表现为其他 exit code(如 -1073741515),但在某些系统兼容性问题中也可能表现为 exit code 127[^5]。 #### 解决方案 1. **检查执行环境的 PATH 变量** 确保所有节点上的执行器容器中所需的命令(如 `hadoop`, `spark-submit`)在 PATH 环境变量中可用。可以在 `spark-submit` 中通过以下方式显式设置环境变量: ```bash --conf spark.yarn.appMasterEnv.PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin ``` 2. **验证资源发现脚本路径与权限** 若配置了自定义资源发现脚本,确保脚本路径正确,并且具有可执行权限: ```bash chmod +x /path/to/discover-resources.sh ``` 同时在 `spark-defaults.conf` 或 `spark-submit` 中设置: ```bash --conf spark.worker.resourceDiscoverScript=/path/to/discover-resources.sh ``` 3. **检查 Windows 系统依赖文件** 若在 Windows 上运行 Spark 并使用 Hadoop 组件,应确保 `hadoop.dll` 和 `winutils.exe` 文件已正确放置在系统路径中(如 `C:\Windows\System32`),并确保其版本与 Hadoop 版本一致。 4. **查看容器日志定位具体错误** 通过 YARN 的 Web UI 或以下命令获取容器日志,以确认具体是哪个命令执行失败: ```bash yarn logs -applicationId <application_id> ``` 日志中通常会含类似 `execve failed` 的信息,有助于定位缺失的命令或脚本。 #### 示例配置 以下是一个完整的 `spark-submit` 示例,含环境变量和资源脚本的配置: ```bash spark-submit \ --master yarn \ --deploy-mode cluster \ --conf spark.worker.resourceDiscoverScript=/opt/spark/scripts/discover-gpu.sh \ --conf spark.yarn.appMasterEnv.PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin \ --conf spark.driver.resource.gpu.amount=1 \ --conf spark.executor.resource.gpu.amount=1 \ your-application.jar ``` #### 验证方法 - 使用 `spark-submit` 时启用事件日志记录,便于事后分析: ```bash --conf spark.eventLog.enabled=true \ --conf spark.eventLog.dir=file:///tmp/spark-events ``` - 查看 Spark UI 和 YARN ResourceManager 页面,确认容器启动状态和资源分配情况。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值