【问题标题】:calling spark-ec2 from within an EC2 instance: ssh connection to host refused从 EC2 实例中调用 spark-ec2:与主机的 ssh 连接被拒绝
【发布时间】:2015-01-06 02:50:06
【问题描述】:

为了运行 Amplab 的训练练习,我在 us-east-1 创建了一个密钥对,安装了训练脚本 (git clone git://github.com/amplab/training-scripts.git -b ampcamp4) 并创建了环境。变量 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 按照http://ampcamp.berkeley.edu/big-data-mini-course/launching-a-bdas-cluster-on-ec2.html 中的说明进行

正在运行

 ./spark-ec2 -i ~/.ssh/myspark.pem -r us-east-1  -k myspark --copy launch try1

生成以下消息:

 johndoe@ip-some-instance:~/projects/spark/training-scripts$ ./spark-ec2 -i ~/.ssh/myspark.pem -r us-east-1  -k myspark --copy launch try1
 Setting up security groups...
 Searching for existing cluster try1...
 Latest Spark AMI: ami-19474270
 Launching instances...
 Launched 5 slaves in us-east-1b, regid = r-0c5e5ee3
 Launched master in us-east-1b, regid = r-316060de
 Waiting for instances to start up...
 Waiting 120 more seconds...
 Copying SSH key /home/johndoe/.ssh/myspark.pem to master...
 ssh: connect to host ec2-54-90-57-174.compute-1.amazonaws.com port 22: Connection refused
 Error connecting to host Command 'ssh -t -o StrictHostKeyChecking=no -i /home/johndoe/.ssh/myspark.pem root@ec2-54-90-57-174.compute-1.amazonaws.com 'mkdir -p ~/.ssh'' returned  non-zero exit status 255, sleeping 30
 ssh: connect to host ec2-54-90-57-174.compute-1.amazonaws.com port 22: Connection refused
 Error connecting to host Command 'ssh -t -o StrictHostKeyChecking=no -i /home/johndoe/.ssh/myspark.pem root@ec2-54-90-57-174.compute-1.amazonaws.com 'mkdir -p ~/.ssh'' returned non-zero exit status 255, sleeping 30
 ...
 ...
 subprocess.CalledProcessError: Command 'ssh -t -o StrictHostKeyChecking=no -i /home/johndoe/.ssh/myspark.pem root@ec2-54-90-57-174.compute-1.amazonaws.com '/root/spark/bin/stop-all.sh'' returned non-zero exit status 127

其中root@ec2-54-90-57-174.compute-1.amazonaws.com 是用户和主实例。我试过-u ec2-user 并将-w 一直增加到600,但得到了同样的错误。

当我登录 AWS 控制台时,我可以在 us-east-1 中看到主实例和从实例,实际上我可以从“本地”ip-some-instance shell SSH 进入主实例。

我的理解是 spark-ec2 脚本负责定义主/从安全组(监听哪些端口等等),我不应该调整这些设置。这就是说,master和slave都听post 22(ampcamp3-slaves/masters sec.组中的Port:22, Protocol:tcp, Source:0.0.0.0/0)。

我在这里不知所措,在我将所有研发资金用于 EC2 实例之前,我将不胜感激......谢谢。

【问题讨论】:

    标签: ssh amazon-ec2 apache-spark


    【解决方案1】:

    这很可能是由于 SSH 需要很长时间才能在实例上启动,导致 120 秒超时到期,然后机器才能登录。你应该可以运行

    ./spark-ec2 -i ~/.ssh/myspark.pem -r us-east-1  -k myspark --copy launch --resume try1
    

    (带有--resume 标志)从中断的地方继续,而无需重新启动新实例。这个问题将在 Spark 1.2.0 中修复,我们有一个新机制可以智能地检查 SSH 状态,而不是依赖于固定的超时。我们还通过构建新的 AMI 来解决长期 SSH 启动延迟背后的根本原因。

    【讨论】:

    • 谢谢。仍然无法访问集群,也许我需要等待更长的时间(已经 1.5 小时了,所以我认为还有其他事情在工作)。
    • Exception in opening the url http://ec2-54-90-57-174.compute-1.amazonaws.com:8080/json Error connecting to host Command 'ssh -t -o StrictHostKeyChecking=no -i /home/johndoe/.ssh/myspark.pem root@ec2-54-90-57-174.compute-1.amazonaws.com '/root/spark/bin/stop-all.sh'' returned non-zero exit status 127, sleeping 30
    • 您使用的是哪个版本的 Spark?
    • 事实上,Spark 的 1.2.0 版本(2014 年 12 月 18 日发布)弃用了“等待”标志并自动等待实例处于“ssh-ready”状态。跨度>
    猜你喜欢
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2017-12-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多