2

Используя команду spark-ec2, я создал кластер с именем «ruofan-large-cluster» в виртуальном частном облаке (vpc) на AWS-EC2. Кластер содержит один главный и два подчиненных узла, и он работает очень хорошо. Теперь я хотел бы остановить кластер некоторое время, а затем перезапустить его. Однако, когда я печатаю команду Баша, как следовать:spark-ec2 не может остановить запуск кластера

$ ./spark-ec2 --region=us-east-1 stop ruofan-large-cluster

Он появился следующий вывод:

Are you sure you want to stop the cluster ruofan-large-cluster? 
DATA ON EPHEMERAL DISKS WILL BE LOST, BUT THE CLUSTER WILL KEEP USING SPACE ON 
AMAZON EBS IF IT IS EBS-BACKED!! 
All data on spot-instance slaves will be lost. 
Stop cluster ruofan-large-cluster (y/N): y 
Searching for existing cluster ruofan-large-cluster in region us-east-1... 
Stopping master... 
Stopping slaves... 

И это не остановить кластер на все ... Я уверен, информация, включая как мое имя кластера и кластер регион является правильной, и я также попробовал следующую команду, чтобы остановить кластер:

./spark-ec2 -k <key-file-name> -i <key-file> -r us-east-1 --vpc-id=<my-vpc-id> --subnet-id=<my-subnet-id> stop ruofan-large-cluster 

Он еще показал тыс один и тот же выход, и он не остановил какой-либо кластер. Я действительно не знаю, почему кластер не остановлен. Буду признателен, если кто-нибудь поможет мне решить проблему. Благодаря!

+1

Идея. Мы все время используем 'stop', и он отлично работает. Что это за версия Spark? –

ответ

4

@ DanielDarabos Спасибо за ваш комментарий! Я потратил несколько часов на эту проблему и нашел ошибку сейчас. На самом деле, я думаю, официальный код Spark spark-ec2.py имеет ошибку для определения имени кластера, поэтому я не могу остановить кластеры. Я использую spark-1.4.0, и в большинстве случаев spark-ec2.py работает очень хорошо, если я непосредственно запускаю кластеры на AWS без подсети vpc. Однако, если я запускаю свой кластер в подсети vpc на AWS, то spark-ec2.py не может найти кластер, поэтому я не могу stop кластера. В частности, в spark-ec2.py, есть небольшой сегмент кода, как показано ниже:

conn = ec2.connect_to_region(opts.region) 

Всякий раз, когда мы делаем такие действия, как запуск, Логин, остановить или уничтожить кластер, spark-ec2 будет в первую очередь подключаться к указанной области, используя приведенный выше код , а затем получает все удовлетворенные экземпляры на reservations =conn.get_all_reservations(filter={some conditions}). Он работает очень хорошо, если я запускаю свой кластер без подсети vpc. Если мой кластер находится в подсети vpc, то conn.get_all_reservations() ничего не получает. Только сейчас я изменил исходный код на `conn = ec2.connect_to_region (opts.region, aws_access_key_id =" my_aws_access_key_id ", aws_secret_access_key =" my_aws_secret_access_key "), и все, что останавливается, логин, уничтожает и т. Д., Отлично работает. Я все еще выясняю дальнейшие причины, почему эта модификация работает :)

+1

Существует несколько [разрешенных проблем, связанных с VPC и spark-ec2] (https://issues.apache.org/jira/browse/SPARK-5246). Считаете ли вы, что это новый? Если бы вы могли, я предлагаю открыть новую тему JIRA, чтобы разработчики узнали о проблеме. –

+0

@NickChammas Спасибо за ваши комментарии! Я просто создал проблему на Apache JIRA. https://issues.apache.org/jira/browse/SPARK-10191 –

+0

@NickChammas Я просто добавил описание проблемы на Apache JIRA. –

Смежные вопросы