Подтвердить что ты не робот

Ошибка подключения Spark EC2 SSH Код возврата SSH 255

Каждый раз, когда я пытаюсь запустить Spark-кластер на AWS через файл Spark ec2/spark_ec2.py, я получаю сообщение об ошибке SSH, которое в конечном итоге разрешается, но тратит много времени.

Прежде чем вы отметите это как дубликат, я знаю, что существует довольно много похожих вопросов, но есть два ключевых отличия: a) мое соединение всегда завершается (в конечном итоге), и я получаю здоровый Spark cluster и 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 SSH key on master...
4b9b3361

Ответ 1

Убедитесь, что ваша группа безопасности в EC2 открыта ssh-портом (22).

Ответ 2

Отметьте этот, вы должны включить входящий трафик ssh

Ответ 3

Пожалуйста, подтвердите, что имя пары ключей на клиенте и на машине назначения совпадает.

На клиенте он, вероятно, хранится в ~/.ssh в файле pem. На хосте назначения его можно увидеть в консоли EC2 (щелкните экземпляр, вкладку "Следующий интерфейс" ).

Разный способ проверить это: запустите новый экземпляр EC2 с тем же ключом и войдите в соответствующий файл pem.

Обратите внимание также на группы безопасности.

Ответ 4

Скрипты spark-ec2 создавать AMI на основе AMI Amazon Linux 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) критически исправляет/обновляет обновления при создании, как описано в Часто задаваемые вопросы Amazon Linux AMI:

При первой загрузке AMI Amazon Linux устанавливается из пакета хранилища любых обновлений безопасности в пространстве пользователя, которые оцениваются как критические или важно, и он делает это до того, как начнутся службы, такие как SSH.

Если AMI не может получить доступ к репозиториям yum, он будет тайм-аут и повторите попытку несколько раз, прежде чем завершить процедуру загрузки. Возможное Причинами этого являются ограничительные настройки брандмауэра или настройки VPC, которые препятствуют доступу к репозиториям пакета Amazon Linux AMI.

Если это действительно так, то создание собственного AMI с виртуальной машины, которая имеет все соответствующие обновления, и вызов script с опцией -ami, должна решить проблему (это может быть автоматизировано для продолжения вершина всего).

Можно сначала проверить это, отключив процесс обновления безопасности, согласно FAQ:

Чтобы отключить обновление безопасности при загрузке с консоли AWS EC2:

На странице "Дополнительные параметры экземпляра" в экземплярах запроса Мастер, есть текстовое поле для отправки AMI Amazon Linux AMI данные пользователя. Эти данные могут быть введены в виде текста или загружены в виде файла. В в любом случае данные должны быть:

#cloud-config
repo_upgrade: none

Чтобы отключить обновление безопасности при загрузке из командной строки:

Создайте текстовый файл с предыдущими данными пользователя и передайте его в aws ec2 run-экземпляры с флагом --user-data file://<filename> (это также можно выполнить с помощью ec2-run-instances -f).

Чтобы отключить обновление безопасности при загрузке при восстановлении Amazon Linux AMI:

Измените /etc/cloud/cloud.cfg и измените repo_upgrade: security на repo_upgrade: none.