Hadoop-3.2.2集群MapReduce计算PI报错:主类未找到及容器异常
Hadoop 3.2.2 MapReduce PI计算容器退出码1问题排查与修复
可能的原因
- 节点资源不足:容器申请的CPU、内存超出NodeManager可用资源,或节点本身内存/CPU负载过高,导致容器无法正常启动
- 权限配置错误:MapReduce作业运行用户对HDFS临时目录、日志目录无读写权限,或NodeManager本地目录权限异常
- JDK环境不兼容:集群节点JDK版本不符合Hadoop 3.2.2要求(需JDK 8),或NodeManager节点
JAVA_HOME环境变量未正确配置 - NodeManager参数配置异常:
yarn-site.xml中容器资源参数(如内存、CPU核心数)设置不合理,或容器启动相关配置项错误
修正方法
- 检查并调整节点资源
- 用
free -h、top命令查看节点内存、CPU使用情况,确保有足够空闲资源分配给容器 - 修改
yarn-site.xml:设置yarn.nodemanager.resource.memory-mb不超过节点实际内存的80%,yarn.nodemanager.resource.cpu-vcores不超过节点CPU核心数的70%,修改后重启NodeManager服务
- 用
- 修复权限问题
- 检查HDFS临时目录权限,执行
hdfs dfs -chmod -R 777 /tmp/hadoop-yarn(生产环境建议为作业运行用户设置专属权限) - 验证NodeManager本地目录(
yarn.nodemanager.local-dirs配置路径)的权限,确保运行NodeManager的用户拥有读写权限
- 检查HDFS临时目录权限,执行
- 验证JDK环境配置
- 在所有集群节点执行
java -version,确认版本为JDK 8 - 检查
hadoop-env.sh文件,确保export JAVA_HOME=/path/to/jdk8配置正确,重启NodeManager
- 在所有集群节点执行
- 排查NodeManager配置
- 确认
yarn-site.xml中yarn.nodemanager.container-executor.class配置为org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor - 检查
yarn.nodemanager.log-dirs配置的目录是否存在且有权限,确保日志文件能正常写入
- 确认
内容的提问来源于stack exchange,提问作者JiaRu Xu
相关产品推荐
相关产品推荐

