Spark EC2 SSH连接错误SSH返回码255

时间:2016-04-04 13:24:09

标签: ssh amazon-ec2 apache-spark

每当我尝试通过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...

4 个答案:

答案 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选项调用脚本应该可以解决问题(这可以自动保持在一切)。

根据Amazon Linux AMI FAQ

,可以通过禁用安全更新过程来首先对此进行测试
  

从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