Frage

Wir haben einen schönen, großen, komplizierten, komplizierten elastischen MapReduce-Job, der wild unterschiedliche Einschränkungen für Hardware für den Mapper vs Collector VS-Reduzierer hat.

Das Problem ist: Für die Mapper benötigen wir Tonnen leichte Maschinen, um mehrere Mapper parallel auszuführen (alles gut dort); Die Sammler sind mehr Erinnerung hungrig, aber es sollte immer noch in Ordnung sein, ihnen etwa 6 GB Peak-Haufen zu geben. . . Das Problem ist jedoch die Reduktoren. Wenn eines derjenigen absetzt, greifen er etwa 32-64 GB zur Verarbeitung.

das Ergebnis, dass wir eine Rund-Robbin-Art von Task-Tod erhalten, da der vollständige Erinnerung an eine Box verbraucht wird, wodurch ein Mapper und der Reduzierer an anderer Stelle neu gestartet werden.

Der einfachste Ansatz wäre, wenn wir irgendwie einen Weg geben könnten, den Reduzierer auf einer anderen "Gruppe" (eine Handvoll ginorme Boxen) zu haben, während die Mapper / Sammler mit kleineren Boxen laufen. Dies könnte auch zu erheblichen Kosteneinsparungen führen, da wir eigentlich keine Dimensionieren der Knotenmapper an den Anforderungen der Reduktoren leiten.

Eine Alternative wäre, den Job zu "aufteilen", so dass ein zweiter Cluster auftritt, der auf die Ausgabe des Mappers Collectors verarbeitet werden kann - aber das ist offensichtlich "sub-optimal".

Die Frage ist also:

  • Gibt es eine Möglichkeit, welche "Gruppen" ein Mapper oder ein Reduzierer wird? Laufen Sie nach elastischem Mapreduce und / oder Hadoop?
  • Gibt es einen Weg, um zu verhindern, dass die Reduktoren anfangen, bis alle Mapper fertig sind?
  • Hat jemand andere Ideen, wie man dies annähert?

Prost!

War es hilfreich?

Lösung

Während eines Hadoop-MAPREDUCE-Jobs beginnen die Reduzierleiter, nachdem alle Mapper fertig sind.Die Ausgabe der Kartenphase wird gemischt und sortiert, bevor die Partitionierung erfolgt, um zu entscheiden, welche Reduzierer welche Daten empfängt.Also beginnen die Reduzierleiter, nachdem die Shuffle / Sort-Phase beendet ist (nachdem die Mapper fertig sind).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top