如何解决Hadoop运行mahout splitDataset时作业job_1634335400729_0001失败问题
Mahout数据集拆分AM容器退出(exitCode=1)排查方案
报错详情:Job job_1634335400729_0001 failed with state FAILED due to: Application application_1634335400729_0001 failed 2 times due to AM Container for appattempt_1634335400729_0001_000002 exited with exitCode: 1。
1 第一步:拉取容器详细日志定位根因
exitCode=1为YARN容器的通用错误码,必须查看完整运行栈才能准确定位问题,执行以下命令拉取本次失败任务的全量日志:
yarn logs -applicationId application_1634335400729_0001
日志中通常会明确标注报错原因,常见的错误类型包括文件权限异常、输入格式不合法、类加载失败、内存OOM四类。
2 常见问题逐一排查
2.1 路径与权限问题
- 验证输入文件有效性:执行
hdfs dfs -ls /mini_datasets1/wimmer-mini_obesity_data2.csv确认文件存在且非空,mahout splitDataset要求输入为纯文本csv文件,不支持未配置编解码的压缩格式文件。 - 检查输出路径冲突:执行
hdfs dfs -test -e mini_datasets1/wimmer-mini_obesity_data2split && echo "输出路径已存在",Mahout不会自动覆盖已有输出路径,若路径存在先执行hdfs dfs -rm -r mini_datasets1/wimmer-mini_obesity_data2split清理后重试。 - 验证HDFS权限:确认当前执行用户对输入路径有读权限、对输出父路径
/mini_datasets1/有写权限,权限不足可切换有权限的用户或通过hdfs dfs -chmod调整权限。 - 修正路径格式:你当前命令中的输出路径为相对路径,容易出现默认写本地磁盘导致AM节点无法访问的问题,建议改为HDFS绝对路径
/mini_datasets1/wimmer-mini_obesity_data2split重试。
2.2 版本兼容与环境变量问题
- 核对版本匹配关系:执行
mahout version和hadoop version确认两者版本兼容,比如Mahout 0.13.x对应Hadoop 2.7.x版本,版本不兼容会出现类加载异常直接导致AM退出。 - 检查环境变量配置:确认
HADOOP_HOME、MAHOUT_HOME环境变量配置正确,执行echo $CLASSPATH | grep hadoop验证Hadoop核心jar包已加载到Mahout运行环境中。
2.3 YARN资源配置校验
即使已完成yarn-site.xml配置,仍需确认参数合理性:
- 查看
yarn.app.mapreduce.am.resource.memory-mb配置值,建议至少配置为1024MB以上,若拆分数据集较大,AM内存不足会触发OOM被YARN直接杀死。 - 执行
yarn top查看集群当前剩余可用内存、CPU核数,若集群资源被占满,任务无法申请到资源也会触发启动失败。
3 快速验证方案
可先切换到Mahout本地模式验证命令逻辑是否正常,排除数据集本身问题:
export MAHOUT_LOCAL=true
重新执行你的拆分命令,若本地运行正常即可确定问题出在集群侧配置,可结合之前拉取的YARN日志定向排查即可。
内容的提问来源于stack exchange,提问作者Omaks
相关产品推荐
相关产品推荐

