6 Stimmen

Kann ich erzwingen, dass meine Reduzierer (Kopierphase) erst starten, wenn alle Mapper abgeschlossen sind?

Ich habe einen Hadoop-Job mit einer ziemlich langen Map-Phase, und ich möchte, dass andere kurze Jobs vorrangig ausgeführt werden. Zu diesem Zweck setze ich die Priorität meines langen Jobs mit hadoop job -set-priority job_id LOW.

Das Problem ist, dass bei meinem langen Auftrag die Kopierphase der Reducer auch dann beginnt, wenn nur 30 % meiner Kartenaufgaben abgeschlossen sind.

Mein Raster ist dann irgendwie verstopft, da alle Reduce-Slots von dem Job mit NIEDRIGER Priorität belegt sind. Die anderen kleinen Jobs können ihre Map-Phasen durchführen, aber sie bekommen keine Reducer, bis mein langer Job fertig ist.

Irgendeine Idee? Ja, danke. J.

9voto

user1151446 Punkte 1755

Ich habe selbst die Antwort auf meine Frage gefunden: Es gibt einen Job-Conf-Parameter, der genau diese Aufgabe erfüllt:

mapred.reduce.slowstart.completed.maps=0.90

die Aufgaben zum Reduzieren beginnen erst, wenn 90 % der Karten fertiggestellt sind. Der Standardwert ist 0,05.

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