Как убить рабочие места 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

Другие вопросы по тегам