Есть три вещи, которые нужно попробовать:
Установка счетчика
Если 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 будет пытаться выполнить задание больше раз, но вы можете скрывать основную проблему (небольшие серверы, большие блоки данных и т. Д.).