Убить задание MapReduce при сбое программы драйвера

У меня есть программа-драйвер, которая запускает задание MapReduce с org.apache.hadoop.mapreduce.Job.waitForCompletion(boolean) в Hadoop 2.4.0. Проблема, с которой я сталкиваюсь, заключается в том, что если программа драйвера дает сбой в середине задания, задание будет продолжать выполняться. Есть ли способ убить запущенное задание MapReduce в случае сбоя программы драйвера? Независимо от того, произойдет ли сбой программы драйвера, я не могу это контролировать. Я предполагаю, что для этого потребуется, чтобы клиент и работа периодически опрашивали друг друга. Есть ли для этого настройка или метод в API?


person user219694    schedule 21.07.2015    source источник
comment
Попробуйте jobClient.run(conf). Это вызовет исключение, если что-то пойдет не так.   -  person Amal G Jose    schedule 22.07.2015


Ответы (1)


Вы можете найти свой идентификатор приложения (jobId) в веб-интерфейсе пряжи или ввести yarn application -list в узле диспетчера ресурсов пряжи кластера. Вы можете убить этот идентификатор приложения с помощью команды kill как: yarn application -kill <applicationId>. Думаю, это решит вашу проблему.

person Sai Neelakantam    schedule 22.07.2015
comment
Есть ли лучшее решение для автоматического уничтожения задания уменьшения карты, как только процесс драйвера будет убит, предположим, с помощью SIGKILL? - person hunch; 30.07.2019