每当我尝试通过Spark ec2 / spark_ec2.py文件在AWS上启动Spark集群时,我都会收到一个SSH连接错误,最终得到解决但浪费了很多时间。
在你将其标记为副本之前我知道有很多类似的问题,但有两个关键的区别:a)我的连接总是完成(最终)我最终得到一个健康的Spark集群和b)其他问题的“答案”通常集中在以前的Spark版本(例如,1.2,1.3等)。我一直经历过这个问题,可以追溯到12个月之前,从1.3到今天的1.6.1。
提前致谢!
终端输出:
Launched master in us-east-1e, regid = r-a1b2c3d4
Waiting for AWS to propagate instance metadata...
Waiting for cluster to enter 'ssh-ready' state...........
Warning: SSH connection error. (This could be temporary.)
Host: ec2-xx-xx-xx-xxx.compute-1.amazonaws.com
SSH return code: 255
SSH output: ssh: connect to host ec2-xx-xx-xx-xxx.compute-1.amazonaws.com port 22: Connection refused
.
Warning: SSH connection error. (This could be temporary.)
Host: ec2-xx-xx-xx-xxx.compute-1.amazonaws.com
SSH return code: 255
SSH output: ssh: connect to host ec2-xx-xx-xx-xxx.compute-1.amazonaws.com port 22: Connection refused
.
Warning: SSH connection error. (This could be temporary.)
Host: ec2-xx-xx-xx-xxx.compute-1.amazonaws.com
SSH return code: 255
SSH output: ssh: connect to host ec2-xx-xx-xx-xxx.compute-1.amazonaws.com port 22: Connection refused
.
Warning: SSH connection error. (This could be temporary.)
Host: ec2-xx-xx-xx-xxx.compute-1.amazonaws.com
SSH return code: 255
SSH output: ssh: connect to host ec2-xx-xx-xx-xxx.compute-1.amazonaws.com port 22: Connection refused
.
Warning: SSH connection error. (This could be temporary.)
Host: ec2-xx-xx-xx-xxx.compute-1.amazonaws.com
SSH return code: 255
SSH output: ssh: connect to host ec2-xx-xx-xx-xxx.compute-1.amazonaws.com port 22: Connection refused
.
Warning: SSH connection error. (This could be temporary.)
Host: ec2-xx-xx-xx-xxx.compute-1.amazonaws.com
SSH return code: 255
SSH output: ssh: connect to host ec2-xx-xx-xx-xxx.compute-1.amazonaws.com port 22: Connection refused
.
Warning: SSH connection error. (This could be temporary.)
Host: ec2-xx-xx-xx-xxx.compute-1.amazonaws.com
SSH return code: 255
SSH output: ssh: connect to host ec2-xx-xx-xx-xxx.compute-1.amazonaws.com port 22: Connection refused
.
Cluster is now in 'ssh-ready' state. Waited 833 seconds.
Generating cluster's SSH key on master...
答案 0 :(得分:1)
请检查EC2中的安全组是否已打开ssh端口(22)。
答案 1 :(得分:1)
检查this,您必须启用入站ssh流量
答案 2 :(得分:1)
请确认客户端和目标计算机上的密钥对名称是否匹配。
在客户端上,它可能存储在pem文件中的〜/ .ssh中。 在目标主机上,可以在EC2控制台中看到它(单击实例,下一个描述选项卡)。
检查它的不同方法:使用相同的密钥对启动一个新的EC2实例,并使用相应的pem文件记录。
介意安全组。
答案 3 :(得分:1)
spark-ec2脚本build AMIs based on the Amazon Linux base AMI:
# Creates an AMI for the Spark EC2 scripts starting with a stock Amazon
# Linux AMI.
# This has only been tested with Amazon Linux AMI 2014.03.2
因此,我认为SSH连接延迟/启动缓慢是由于EC2实例在创建时应用(或尝试和超时,具体取决于VPC配置)关键补丁/安全更新,详见{{ 3}}:
首次启动时,Amazon Linux AMI将从该软件包安装 存储库任何被评级为严重的用户空间安全更新 或者重要的是,它在服务之前启动,例如SSH,开始。
如果AMI无法访问yum存储库,它将超时并且 在完成引导过程之前重试多次。可能 原因是限制性防火墙设置或VPC设置, 这会阻止访问Amazon Linux AMI软件包存储库。
如果确实如此,那么从应用了所有相关更新的VM创建自己的AMI并使用--ami选项调用脚本应该可以解决问题(这可以自动保持在一切)。
,可以通过禁用安全更新过程来首先对此进行测试从AWS EC2控制台启用时禁用安全更新:
在“请求实例”中的“高级实例选项”页面上 向导,有一个用于发送Amazon Linux AMI的文本字段 用户数据。此数据可以作为文本输入,也可以作为文件上载。在 无论哪种情况,数据都应该是:
#cloud-config repo_upgrade: none
要从命令行启用安全更新,请执行以下操作:
使用前面的用户数据创建一个文本文件,并将其传递给aws 带有
--user-data file://<filename>
标志的ec2 run-instances(这个 也可以使用ec2-run-instances -f
)完成。在重新绑定Amazon时,在启动时禁用安全更新 Linux AMI:
修改
/etc/cloud/cloud.cfg
并将repo_upgrade: security
更改为repo_upgrade: none
。