Необычная ошибка Hadoop - задачи убиваются сами по себе - PullRequest
6 голосов
/ 01 марта 2012

Когда я запускаю задание hadoop, я получаю следующую ошибку:

Получен запрос на уничтожение задачи 'попытки_201202230353_23186_r_000004_0' от пользователя.Журналы кажутся чистыми.Я использую 28 редукторов, и этого не происходит со всеми редукторами.Это происходит для избранных, и редуктор запускается снова.Я не понимаю этого.Еще одна вещь, которую я заметил, это то, что для небольшого набора данных я редко вижу эту ошибку!

Ответы [ 2 ]

4 голосов
/ 08 июля 2013

Есть три вещи, которые нужно попробовать:

Установка счетчика
Если Hadoop увидит счетчик для выполнения задания, он не убьет его (см. Ответ Arockiaraj Durairaj.) Это кажется самым элегантным, поскольку может позволить вам более глубокое понимание долговременных рабочих мест, и, возможно, это может произойти.

Более длительное время ожидания задания
По умолчанию время ожидания заданий Hadoop составляет 10 минут. Изменение тайм-аута является грубой силой, но может сработать. Представьте, что вы анализируете аудиофайлы, которые обычно имеют размер 5 МБ (песни), но у вас есть несколько файлов размером 50 МБ (весь альбом). Hadoop хранит отдельный файл для каждого блока. Таким образом, если размер блока HDFS составляет 64 МБ, для файла 5 МБ и 50 МБ потребуется 1 блок (64 МБ) (см. Здесь http://blog.cloudera.com/blog/2009/02/the-small-files-problem/, и здесь Небольшие файлы и блоки HDFS .) Однако , задание 5 МБ будет работать быстрее, чем задание 50 МБ. Тайм-аут задачи может быть увеличен в коде (mapred.task.timeout) для работы согласно ответам на этот похожий вопрос: Как исправить «Задаче по попытке_201104251139_0295_r_000006_0 не удалось сообщить состояние в течение 600 секунд.»

Увеличение попыток задачи
Сконфигурируйте Hadoop, чтобы сделать больше, чем 4 попытки по умолчанию (см. Ответ Прадипа Голлакоты). Это самый грубый метод из трех. Hadoop будет пытаться выполнить задание больше раз, но вы можете скрывать основную проблему (небольшие серверы, большие блоки данных и т. Д.).

1 голос
/ 07 июля 2013

Можете ли вы попробовать использовать счетчик (счетчик hadoop) в вашей логике сокращения?Похоже, hadoop не может определить, работает ли ваша программа Reduce или зависает.Он ждет несколько минут и убивает его, даже если ваша логика все еще выполняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...