Como corrigir "A tentativa de tarefa_201104251139_0295_r_000006_0 falhou ao relatar o status por 600 segundos."
Eu escrevi um trabalho de mapreduce para extrair algumas informações de um conjunto de dados. O conjunto de dados é a classificação dos usuários sobre filmes. O número de usuários é de cerca de 250 mil e o número de filmes é de cerca de 300 mil. A saída do mapa é<user, <movie, rating>*> and <movie,<user,rating>*>
. No redutor, processarei esses pares.
Mas quando executo o trabalho, o mapeador é concluído conforme o esperado, mas o redutor sempre reclama que
Task attempt_* failed to report status for 600 seconds.
Sei que isso ocorreu devido à falha na atualização do status, então adicionei uma chamada acontext.progress()
no meu código assim:
int count = 0;
while (values.hasNext()) {
if (count++ % 100 == 0) {
context.progress();
}
/*other code here*/
}
Infelizmente, isso não ajuda. Muitas tarefas de redução ainda falharam.
Aqui está o log:
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!
BTW, o erro ocorreu na fase de redução para cópia, o log diz:
reduce > copy (28 of 31 at 26.69 MB/s) > :Lost task tracker: tracker_hadoop-56:localhost/127.0.0.1:34385
Obrigado pela ajuda