私有子网中AWS EMR集群创建失败,求助排查问题
核心错误定位
从日志信息来看,主节点创建失败的直接诱因是bootstrap动作执行失败,后续的服务连接异常、HDFS配置错误均为该问题的连锁反应:
主节点Bootstrap执行失败
从bootstrap/master.log日志可见:2023-06-27 12:26:24,918 ERROR i-01191fd75d02d1257: failed to start. bootstrap action 1 failed with non-zero exit code.
同一集群内的其他实例(i-093e926ba8e684d7c)bootstrap动作执行完成,说明问题仅出在主节点的初始化流程中。HDFS配置未正确初始化
/emr/instance-controller/log/hadoop-commands/下的错误显示:report: FileSystem file:/// is not an HDFS file system. The fs class is: org.apache.hadoop.fs.LocalFileSystem
这表明主节点的HDFS配置未生成或加载错误,系统默认使用本地文件系统,导致依赖HDFS的hdfs dfsadmin -report命令执行失败。YARN服务未启动引发连接拒绝
instance-controller.log中的连接错误:java.net.ConnectException: Connection refused (Connection refused)
是因为主节点bootstrap失败,YARN ResourceManager服务未启动,导致后续的应用探测无法连接8088端口。
排查与修复步骤
- 查看Bootstrap动作详细日志:通过SSM会话管理器或堡垒机登录主节点,检查
/var/log/bootstrap-actions/1/下的日志文件,明确bootstrap动作1的具体执行命令和失败原因。 - 验证HDFS配置文件:检查主节点
/etc/hadoop/conf/core-site.xml中的fs.defaultFS参数,确认其配置为HDFS地址(如hdfs://<主节点私有IP>:9000),而非本地文件系统路径。 - 确认私有子网网络连通性:验证主节点能否访问EMR所需的S3存储桶(包括公共镜像桶、自定义资源桶),以及能否正常解析AWS服务域名,确保NAT Gateway路由配置生效。
- 更换实例规格测试:m1.small为老旧实例类型,内存资源有限,部分EMR版本可能因资源不足导致初始化失败,尝试更换为m3.medium或更高规格实例重新创建集群。
内容的提问来源于stack exchange,提问作者Jake Boomgaarden

