Убейте Spark Job или прекратите работу кластера EMR, если работа займет больше времени, чем ожидалось - PullRequest
0 голосов
/ 10 января 2019

У меня периодически возникает зависание, и мой кластер AWS EMR находится в состоянии, когда приложение работает, но кластер действительно завис. Я знаю, что если моя работа не застрянет, она закончится через 5 часов или меньше. Если он все еще работает после этого, это признак того, что работа застряла. Пряжа и интерфейс Spark по-прежнему отзывчивы, просто исполнитель застревает на задании.

Справочная информация: я использую эфемерный кластер EMR, который выполняет только один шаг перед завершением, поэтому убить его не проблема, если я замечаю, что эта работа зависает.

Какой самый простой способ убить задачу, задание или кластер в этом случае? В идеале это не потребует настройки какого-либо дополнительного сервиса для наблюдения за работой - в идеале я мог бы использовать какую-то настройку spark / yarn / emr.

Примечание. Я пытался использовать спекуляцию спекуляцией, чтобы разблокировать застрявшую работу с искрой, но это не помогает.

1 Ответ

0 голосов
/ 11 января 2019

EMR имеет функцию Bootstrap Actions , где вы можете запускать сценарии, которые запускаются при инициализации кластера. Я использовал эту функцию вместе со сценарием запуска, который отслеживает длительность работы кластера и завершает работу через определенное время.

Я использую сценарий, основанный на этом, для действия начальной загрузки. https://github.com/thomhopmans/themarketingtechnologist/blob/master/6_deploy_spark_cluster_on_aws/files/terminate_idle_cluster.sh

По сути, создайте скрипт, который проверяет / proc / uptime, чтобы увидеть, как долго машина EC2 была в сети, а после того, как время безотказной работы превысит ваш лимит времени, вы можете отправить команду отключения в кластер.

...