причины могут быть:
исал задание 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
Спасибо за помощь.