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

AWS EMR环境下Spark集群start-slaves.sh启动失败求助

Spark start-slaves.sh启动失败排查方案(AWS EMR环境)

环境信息

  • Master节点:172.31.1.172
  • Slave节点:slave1(172.31.1.11)、slave2(172.31.1.245)
  • 已完成配置:/etc/hosts、spark-env.sh、workers/slaves文件;Master可手动SSH登录root@slave1/2,但start-slaves.sh启动失败,start-master.sh正常。

排查步骤与解决方案

1. 确认脚本执行的用户与SSH密钥匹配

手动SSH使用root用户成功,但start-slaves.sh可能以EMR默认用户(如hadoop或ec2-user)执行,导致密钥不匹配:

  • 切换到root用户后重新执行脚本:sudo su - root && cd ${SPARKPATH}/sbin && ./start-slaves.sh
  • 或在spark-env.sh中指定root的SSH密钥:
    export SPARK_SSH_OPTS="-i /root/.ssh/id_rsa"
    

2. 校验workers/slaves文件格式

确保文件无多余字符,每个节点单独一行:

  • 正确格式示例(${SPARKPATH}/conf/workers):
    slave1
    slave2
    
    或直接使用IP:
    172.31.1.11
    172.31.1.245
    
  • 若使用slaves文件,需在spark-env.sh中指定:export SPARK_SLAVES="${SPARKPATH}/conf/slaves"

3. 统一Master与Slave的Spark路径

脚本会远程执行Slave节点的start-slave.sh,路径不一致会导致启动失败:

  • 在Master上执行验证命令:
    ssh root@slave1 "ls ${SPARKPATH}/sbin/start-slave.sh"
    
  • 若返回文件不存在,需同步Slave节点的Spark安装路径,或修改Master的spark-env.sh中的SPARK_HOME为Slave上的正确路径。

4. 查看启动错误日志

捕获脚本执行的详细错误:

  • 执行脚本时输出日志:
    ./start-slaves.sh > start-slaves-error.log 2>&1
    
  • 查看Slave节点的Spark日志(默认路径${SPARKPATH}/logs),定位具体报错信息。

5. 关闭SSH主机密钥检查

脚本执行时可能因未缓存主机密钥导致连接中断,在spark-env.sh中添加:

export SPARK_SSH_OPTS="-o StrictHostKeyChecking=no"

6. 验证Slave节点权限与环境

  • 确保Slave节点的${SPARKPATH}目录拥有root权限:ssh root@slave1 "chown -R root:root ${SPARKPATH}"
  • 检查Slave节点的Java环境变量,确保JAVA_HOME配置正确(Spark依赖Java环境):ssh root@slave1 "echo $JAVA_HOME"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:50:12