我正在尝试使用预先打包的EC2脚本启动独立的Spark群集,但它只是无限期地挂起'ssh-ready'状态:
ubuntu@machine:~/spark-1.2.0-bin-hadoop2.4$ ./ec2/spark-ec2 -k <key-pair> -i <identity-file>.pem -r us-west-2 -s 3 launch test
Setting up security groups...
Searching for existing cluster test...
Spark AMI: ami-ae6e0d9e
Launching instances...
Launched 3 slaves in us-west-2c, regid = r-b_______6
Launched master in us-west-2c, regid = r-0______0
Waiting for all instances in cluster to enter 'ssh-ready' state..........
然而,我可以在没有投诉的情况下SSH到这些实例:
ubuntu@machine:~$ ssh -i <identity-file>.pem root@master-ip
Last login: Day MMM DD HH:mm:ss 20YY from c-AA-BBB-CCCC-DDD.eee1.ff.provider.net
__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/
There are 59 security update(s) out of 257 total update(s) available
Run "sudo yum update" to apply all updates.
Amazon Linux version 2014.09 is available.
root@ip-internal ~]$
我正在尝试弄清楚这是AWS或Spark脚本中的问题。直到最近我才从未遇到过这个问题。
答案 0 :(得分:4)
此问题为fixed in Spark 1.3.0。
您的问题是由于conflicting entries in you SSHs known_hosts
file而无法停止SSH而导致的。
要解决您的问题,请将-o UserKnownHostsFile=/dev/null
添加到spark_ec2.py
脚本like this。
或者,为了清理并避免在以后使用SSH连接到群集时出现问题,我建议您:
~/.ssh/known_hosts
删除包含EC2主机的所有行,例如: ec2-54-154-27-180.eu-west-1.compute.amazonaws.com,54.154.27.180 ssh-rsa (...)
答案 1 :(得分:2)
我遇到了同样的问题,我按照线程中提到的所有步骤进行了操作(主要是将-o UserKnownHostsFile = / dev / null添加到你的spark_ec2.py脚本中),仍然挂着说
Waiting for all instances in cluster to enter 'ssh-ready' state
更改私钥文件的权限并重新运行spark-ec2脚本
[spar@673d356d]/tmp/spark-1.2.1-bin-hadoop2.4/ec2% chmod 0400 /tmp/mykey.pem
要进行故障排除,我修改了spark_ec2.py并记录了所使用的ssh命令并尝试在命令提示符下执行它,这是密钥的错误权限:
[spar@673d356d]/tmp/spark-1.2.1-bin-hadoop2.4/ec2% ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i /tmp/mykey.pem -o ConnectTimeout=3 uroot@52.1.208.72
Warning: Permanently added '52.1.208.72' (RSA) to the list of known hosts.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/tmp/mykey.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /tmp/mykey.pem
Permission denied (publickey).
答案 2 :(得分:1)
我刚遇到同样的情况。我在def is_ssh_available()
进入python脚本并将其转储出返回代码和cmd。
except subprocess.CalledProcessError, e:
print "CalledProcessError "
print e.returncode
print e.cmd
我将密钥文件位置设为~/.pzkeys/mykey.pem
- 作为实验,我将其更改为完全限定 - 即/home/pete.zybrick/.pzkeys/mykey.pem
并且运行正常。
在那之后,我遇到了另一个错误 - 我试图使用--user=ec2-user
(我尽量避免使用root),然后我在rsync上获得了权限错误,删除了--user-ec2-user
所以它会使用root作为默认值,使用--resume
进行了另一次尝试,运行成功完成。
答案 3 :(得分:1)
我使用绝对(非相对)路径访问我的身份档案(灵感来自Peter Zybrick)并完成了Grzegorz Dubicki建议的所有事情。谢谢。