Шаг отмены AWS EMR не может завершить работу соответствующего приложения spark

#apache-spark #amazon-emr

#apache-spark #amazon-emr

Вопрос:

Я разрабатываю CI / CD для длительных заданий Spark на AWS EMR. Задание spark добавляется как один шаг в кластере EMR. Я рассматриваю возможность использования шага отмены и добавления шага для CI / CD. Поэтому я интегрировал скрипт оболочки Linux в конвейер CI / CD, который предназначен для отмены и добавления шага. Шаг может быть отменен. Однако соответствующее приложение spark все еще работает. Это нормально? Как правильно остановить запущенное приложение spark для CI / CD? Спасибо!

Комментарии:

1. вы можете войти в систему на главном узле и выполнить yarn application -kill application_id или вы можете использовать rest API curl -v -X PUT -d ‘{«state»: «KILLED»}» localhost:8088/ws/v1/cluster/apps/$ {application_id}’ … пожалуйста, проверьте yarn rest API, чтобы изменить состояние приложения

2. Спасибо kavetiraviteja. Это очень хороший комментарий. Я использовал этот метод для реализации лямбда-функции для целей CICD. это работает хорошо. Все решение, как показано ниже. Шаг 1. Получите главное DNS-имя кластера emr с помощью aws cli. Шаг 2. Чтобы проверить, выполняется ли целевое задание spark с помощью rest API. Шаг 3. Чтобы завершить работу задания spark, если оно выполняется с помощью Rest API. Шаг 4. Использовать aws cli для добавления шага для запуска задания spark, полученного из s3. Не уверен, что это стандартный способ CICD для AWS EMR, но он работает довольно хорошо.

Ответ №1:

Когда выполняется шаг, вы не можете отменить его через AWS API, но вы можете сделать это с помощью команды EMR yarn, такой как

 yarn application -kill application_id
  

где идентификатор можно получить из приведенной ниже команды.

 yarn application -list 
  

Комментарии:

1. Спасибо, мой вопрос заключается в том, как запустить ‘yarn application -kill’ в конвейере ci cd для кластера emr.

2. через ssh, нет опции AFAIK.

3. да, я также не нашел других вариантов. Сложно выполнить ssh в конвейере ci / cd к главному узлу emr. Не уверен, что является наилучшей практикой для передачи ci / cd задания spark в emr.

4. Если вы не заботились об отмене задания, а просто ждали, вы можете просто использовать aws API. Но в этом случае вы должны предоставить информацию о ключе EMR при его создании и SSH с помощью этого ssh-ключа присоединить какую-либо команду ssh -i key user@host "command" .