Как исправить ошибку: «Task попытку_201104251139_0295_r_000006_0 не удалось сообщить о состоянии в течение 600 секунд». - PullRequest
24 голосов
/ 03 мая 2011

Я написал задание mapreduce для извлечения некоторой информации из набора данных.Набор данных - это рейтинг пользователей о фильмах.Количество пользователей составляет около 250 тыс., А количество фильмов около 300 тыс.Выходные данные карты <user, <movie, rating>*> and <movie,<user,rating>*>.В редукторе я обработаю эти пары.

Но когда я запускаю задание, маппер завершает работу, как ожидается, но редуктор всегда жалуется, что

Task attempt_* failed to report status for 600 seconds.

Я знаю, что это происходит из-за сбоячтобы обновить статус, поэтому я добавил в свой код вызов context.progress() следующим образом:

int count = 0;
while (values.hasNext()) {
  if (count++ % 100 == 0) {
    context.progress();
  }
  /*other code here*/
}

К сожалению, это не помогает.Тем не менее, многие задачи сокращения были неудачными.

Вот журнал:

Task attempt_201104251139_0295_r_000014_1 failed to report status for 600 seconds. Killing!
11/05/03 10:09:09 INFO mapred.JobClient: Task Id : attempt_201104251139_0295_r_000012_1, Status : FAILED
Task attempt_201104251139_0295_r_000012_1 failed to report status for 600 seconds. Killing!
11/05/03 10:09:09 INFO mapred.JobClient: Task Id : attempt_201104251139_0295_r_000006_1, Status : FAILED
Task attempt_201104251139_0295_r_000006_1 failed to report status for 600 seconds. Killing!

Кстати, ошибка произошла в фазе сокращения до копирования, журнал говорит:

reduce > copy (28 of 31 at 26.69 MB/s) > :Lost task tracker: tracker_hadoop-56:localhost/127.0.0.1:34385

Спасибо за помощь.

Ответы [ 5 ]

26 голосов
/ 03 мая 2011

Самый простой способ будет установить этот параметр конфигурации:

<property>
  <name>mapred.task.timeout</name>
  <value>1800000</value> <!-- 30 minutes -->
</property>

in mapred-site.xml

15 голосов
/ 04 января 2013

Самый простой способ - установить конфигурацию работы внутри программы

 Configuration conf=new Configuration();
 long milliSeconds = 1000*60*60; <default is 600000, likewise can give any value)
 conf.setLong("mapred.task.timeout", milliSeconds);

**, прежде чем настраивать ее, проверьте правильность свойства в файле файла задания (job.xml) в графическом интерфейсе Jobtracker.назовите его mapred.task.timeout или mapreduce.task.timeout.,,при запуске задания снова проверьте в файле задания, изменяется ли это свойство в соответствии с заданным значением.

11 голосов
/ 26 ноября 2013

В более новых версиях имя параметра было изменено на mapreduce.task.timeout, как описано в этой ссылке (поиск task.timeout). Кроме того, вы также можете отключить этот таймаут, как описано в приведенной выше ссылке:

Количество миллисекунд до завершения задачи, если оно не читает ввод, не записывает вывод и не обновляет его статус строка. Значение 0 отключает тайм-аут.

Ниже приведен пример настройки в mapred-site.xml:

<property>
  <name>mapreduce.task.timeout</name>
  <value>0</value> <!-- A value of 0 disables the timeout -->
</property>
3 голосов
/ 09 июля 2013

Если у вас есть запрос улья и время его ожидания, вы можете установить вышеуказанные конфигурации следующим образом:

set mapred.tasktracker.expiry.interval = 1800000;

set mapred.task.время ожидания = 1800000;

1 голос
/ 27 февраля 2014

С https://issues.apache.org/jira/browse/HADOOP-1763

причины могут быть:

1. Tasktrackers run the maps successfully
2. Map outputs are served by jetty servers on the TTs.
3. All the reduce tasks connects to all the TT where maps are run. 
4. since there are lots of reduces wanting to connect the map output server, the jetty servers run out of threads (default 40)
5. tasktrackers continue to make periodic heartbeats to JT, so that they are not dead, but their jetty servers are (temporarily) down.
...