启动EC2集群实例时遭遇子进程错误
解决Spark-EC2启动时Git克隆协议版本不兼容问题
问题核心
执行Spark-EC2集群启动命令时卡在"Waiting for cluster to enter 'ssh-ready' state",终端输出关键错误:
error: Peer reports incompatible or unsupported protocol version. while accessing https://github.com/amplab/spark-ec2/info/refs?service=git-upload-pack fatal: HTTP request failed
原因是GitHub已停止支持TLS 1.0/1.1协议,而Spark-EC2默认使用的EC2实例镜像中,Git和OpenSSL版本过低,无法建立符合要求的SSL连接。
解决方案
1. 手动登录EC2主节点并升级依赖
首先通过SSH连接到集群主节点:
ssh -i ru_spark.pem root@ec2-52-87-225-32.compute-1.amazonaws.com
根据实例操作系统执行升级命令:
- Amazon Linux(Spark-EC2默认镜像):
yum update openssl -y yum update git -y - Ubuntu(若使用自定义镜像):
apt-get update && apt-get install --only-upgrade openssl git -y
升级完成后验证版本:
git --version # 需达到2.18及以上 openssl version # 需支持TLS 1.2(版本1.0.1g+)
2. 强制Git使用TLS 1.2协议
在主节点执行以下命令,配置Git全局使用TLS 1.2:
git config --global http.sslVersion tlsv1.2
或者直接修改Git配置文件:
echo "http.sslVersion = tlsv1.2" >> ~/.gitconfig
3. 重新执行克隆命令
在主节点手动完成Spark-EC2脚本的克隆:
rm -rf spark-ec2 && git clone https://github.com/amplab/spark-ec2 -b branch-1.6 spark-ec2
确认克隆成功后,退出SSH连接,回到本地重新运行Spark-EC2的launch命令即可继续集群部署。
4. 长期解决方案:使用自定义AMI
如果频繁部署Spark集群,可提前创建自定义AMI:
- 启动一个基础EC2实例,完成Git和OpenSSL的升级配置
- 将实例创建为自定义AMI
- 后续启动集群时,通过
--ami参数指定该自定义镜像,避免每次手动升级
内容的提问来源于stack exchange,提问作者coder_7777
相关产品推荐
相关产品推荐

