Spark EC2 SSH ошибка соединения SSH код возврата 255

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

Прежде чем вы отметите это как дубликат, я знаю, что было задано довольно много похожих вопросов, но есть два ключевых различия: а) мое соединение всегда завершается (в конце концов), и я получаю здоровый кластер Spark и б) "ответы" остальные вопросы обычно касаются предыдущих версий 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 ответа

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

Скрипты spark-ec2 создают AMI на основе базового AMI Amazon Linux:

# 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) критические исправления / обновления безопасности при создании, как подробно описано в FAQ по Amazon Linux AMI:

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

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

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

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

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

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

#cloud-config
repo_upgrade: none

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

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

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

изменять /etc/cloud/cloud.cfg и изменить repo_upgrade: security в repo_upgrade: none,

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

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

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

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

Пожалуйста, проверьте, если ваша группа безопасности в EC2 имеет открытый порт ssh (22).

Другие вопросы по тегам