Как убить рабочие места Hadoop
Я хочу автоматически убить все мои задания hadoop, когда мой код встречает необработанное исключение. Мне интересно, как лучше всего это делать?
Спасибо
5 ответов
В зависимости от версии выполните:
версия <2.3.0
Убить задницу
hadoop job -kill $jobId
Вы можете получить список всего, что делает jobId:
hadoop job -list
версия>=2.3.0
Убить задницу
yarn application -kill $ApplicationId
Вы можете получить список всех действий ApplicationId:
yarn application -list
Использование следующей команды не рекомендуется
hadoop job -list
hadoop job -kill $jobId
рассмотреть возможность использования
mapred job -list
mapred job -kill $jobId
Бежать list
чтобы показать все задания, затем используйте jobID/applicationID в соответствующей команде.
Убить mapred рабочих мест:
mapred job -list
mapred job -kill <jobId>
Убить работу пряжи:
yarn application -list
yarn application -kill <ApplicationId>
Необработанное исключение (при условии, что оно повторяется, как плохие данные, в отличие от ошибок чтения из определенного узла данных), в конечном итоге, в любом случае завершит работу.
Вы можете настроить максимальное количество раз, когда конкретная карта или задача сокращения может завершиться сбоем до полного сбоя задания, с помощью следующих свойств:
mapred.map.max.attempts
- Максимальное количество попыток на задачу карты. Другими словами, фреймворк будет пытаться выполнить задачу карты много раз, прежде чем отказаться от нее.mapred.reduce.max.attempts
- То же, что и выше, но для сокращения задач
Если вы хотите отменить задание при первом сбое, установите для этого значения по умолчанию значение от 4 до 1.
Просто принудительно убейте идентификатор процесса, задание hadoop также будет уничтожено автоматически. Используйте эту команду:
kill -9 <process_id>
Например: идентификатор процесса: 4040 namenode
username@hostname:~$ kill -9 4040
Используйте команду ниже, чтобы убить все задания, выполняемые на пряжи.
Для принятых работ используйте команду ниже.
for x in $(yarn application -list -appStates ACCEPTED | awk 'NR > 2 { print $1 }'); do yarn application -kill $x; done
Для запуска задания используйте следующую команду.
for x in $(yarn application -list -appStates RUNNING | awk 'NR > 2 { print $1 }'); do yarn application -kill $x; done