Рабочие потоки Hadoop SUCCEEDED, но убиты ApplicationMaster
Я только что закончил настройку небольшого кластера сложения (используя 3 машины ubuntu и apache hadoop 2.2.0), и теперь я пытаюсь запустить потоковые задания на питоне.
Запуск тестового задания У меня возникает следующая проблема:
Почти все задачи карты отмечены как успешные, но с примечанием о том, что Контейнер убит.
В онлайн-интерфейсе журнал для работы с картами говорит:
Прогресс 100.00
Состояние SUCCEEDED
но в Примечание он говорит почти для каждой попытки (~ 200)
Контейнер, убитый ApplicationMaster.
или
Контейнер, убитый ApplicationMaster. Контейнер убит по запросу. Код выхода - 143
В файле журнала, связанном с попыткой, я вижу сообщение, в котором делается "Задача" попытка_xxxxxxxxx_0 ".
Я также получаю 3 попытки с одним и тем же журналом, только у этих 3 есть
Состояние УБЕДЕНО
которые находятся под убитыми рабочими местами.
Выход stderr пуст для всех заданий/попыток.
При просмотре основного журнала приложений и после одной из успешных (но убитых) попыток я нахожу следующие журналы:
- Переход от NEW к UNASSIGNED
- Переход от UNASSIGNED к ASSIGNED
- несколько обновлений прогресса, в том числе: 1.0
- Готово подтверждение
- RUNNING to SUCCESS_CONTAINER_CLEANUP
- CONTAINER_REMOTE_CLEANUP
- KILLING попытка_xxxx
- Переход от SUCCESS_CONTAINER_CLEANUP к SUCCEEDED
- Задача, перенесенная с RUNNING на SUCCEEDED
Все попытки пронумерованы xxxx_0, поэтому я предполагаю, что они не были убиты в результате спекулятивного исполнения.
Должен ли я беспокоиться об этом? И что заставляет контейнеры убивать? Любые предложения будут очень благодарны!
Ответы
Ответ 1
Да, я согласен с @joshua. Кажется, это ошибка, связанная с задачей/контейнером, которая не умеет грациозно после успешного завершения задачи map/reduce. После льготного периода ApplicationMaster должен его убить.
Я запускаю версию "пряжи" = Hadoop 2.5.0-cdh5.3.0
Я выбрал одну из задач и grep'ed для ее истории в журнале, сгенерированном для моего приложения MR:
$ yarn logs -applicationId application_1422894000163_0003 |grep attempt_1422894000163_0003_r_000008_0
Вы увидите, что "попытка_1422894000163_0003_r_000008_0" проходит через "TaskAttempt Transitioned от NEW до UNASSIGNED.. до RUNNING до SUCCESS_CONTAINER_CLEANUP".
На шаге "SUCCESS_CONTAINER_CLEANUP" вы увидите сообщения об уничтожении этого контейнера. После того, как этот контейнер будет убит, эта попытка переходит к шагу "TaskAttempt Transitioned from SUCCESS_CONTAINER_CLEANUP to SUCCEEDED".
Ответ 2
Насколько мне известно, одна и та же задача выполняется на многих узлах. Как только один node возвращает результат, задачи на других узлах будут убиты. Вот почему работа SUCCEEDED, но отдельные задачи находятся в состоянии KILLED.
Ответ 3
Какую версию вы используете? Возможно, вы столкнулись
YARN-903: DistributedShell бросает ошибки в журналах после успешного завершения
Это ошибка регистрации. (Менеджер пытается остановить уже готовые контейнеры.)