2 Stimmen

Wie meldet man den Fortschritt eines Hadoop-Jobs, um zu vermeiden, dass der Task wegen Zeitüberschreitung beendet wird?

1) Ich habe einen reinen Map-Hadoop-Auftrag, der die Daten an den Cassandra-Cluster streamt.

2) Manchmal dauert das Streaming mehr als 10 Minuten, und da der Fortschritt nicht an den Auftrag gemeldet wird, wird die Aufgabe abgebrochen.

3) Ich habe versucht, den Fortschritt mit der Methode context.progress() zu melden, aber es hat nicht geholfen.

Ist noch etwas anderes erforderlich, um den Fortschritt an den Hadoop-Job zu melden?

Ich habe einen Beispielcode wie folgt geschrieben, um das Problem zu simulieren und mit dem folgenden Code.

Thread.sleep(360000);

context.progress();

Thread.sleep(360000);

Es schlägt mit folgender Fehlermeldung fehl

12/02/06 11:40:25 INFO mapred.JobClient: Task Id : attempt_201202061119_0001_m_000001_1, Status : FAILED Task attempt_201202061119_0001_m_000001_1 konnte 601 Sekunden lang keinen Status melden. Sekunden. Töten!

0voto

wlk Punkte 5569

Bitte beachten Sie diese Frage:
So beheben Sie die Meldung "Task attempt_201104251139_0295_r_000006_0 failed to report status for 600 seconds".

Einstellung mapred.task.timeout Eigenschaft auf einen höheren Wert zu setzen, ist der einfachste Weg, dieses Problem zu beheben.

0voto

Harinder Punkte 11341

Context.progress() sollte funktionieren, aber es könnte sein, dass Sie mit dem folgenden Problem konfrontiert sind: https://issues.apache.org/jira/browse/MAPREDUCE-1905 was in den späteren Versionen behoben ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X