Die Karte Phase von Hadoop MapReduce der Anwendung Durchfluss

Eine MapReduce-Anwendung verarbeitet die Daten in Eingabe Spalten auf ein Rekord-by-Rekord Basis und jeder Datensatz von MapReduce zu sein ein verstanden wird Schlüsselwert Paar. Nachdem die Eingangs Splits berechnet wurden, können die Mapper Aufgaben beginnen, sie verarbeiten - das heißt, direkt nach der Planungsfunktion der Resource Manager sie ihre Verarbeitungsressourcen zuweist. (In Hadoop 1, weist der Jobtracker Mapper Aufgaben zu spezifischen Verarbeitungs Slots.)

Der Mapper Aufgabe selbst verarbeitet seine Eingangs einen Datensatz zu einem Zeitpunkt aufgespalten - in der Figur, dieser einsame Datensatz wird durch den Schlüssel / Wert-Paar dargestellt. Im Falle unserer Flugdaten, wenn die Eingangs Splits berechnet (die Standard-Dateiverarbeitungsverfahren für Textdateien), ist die Annahme, dass jede Zeile in der Textdatei ein einzelner Datensatz ist.

bild0.jpg

Für jeden Datensatz stellt den Text der Zeile selbst den Wert und die Byte jeder Zeile vom Anfang des geteilten Offset gilt als der Schlüssel zu sein.

Sie fragen sich vielleicht, warum die Zeilennummer nicht anstelle des Offset-Byte verwendet wird. Wenn man bedenkt, dass eine sehr große Textdatei in viele einzelne Datenblöcke gebrochen ist, und wird so viele Spaltungen verarbeitet werden, ist die Zeilennummer ein riskantes Konzept.

Die Anzahl der Zeilen in jedem geteilten variieren, so wäre es unmöglich, die Anzahl der Zeilen zu berechnen, vor dem eine verarbeitet wird. Jedoch mit den Byte-Offset kann genau sein, weil jeder Block eine feste Anzahl von Bytes aufweist.

Als Mapper Aufgabe jeden Datensatz verarbeitet, erzeugt er einen neuen Schlüssel / Wert-Paar: Der Schlüssel und der Wert hier völlig verschieden von der Eingangspaar sein kann. Der Ausgang des Mapper Aufgabe ist die vollständige Sammlung aller dieser Schlüssel / Wert-Paaren.

Bevor der endgültige Ausgabedatei für jeden Mapper Aufgabe geschrieben wird, wird die Ausgabe basierend auf dem Schlüssel und sortierter partitioniert. Diese Unterteilung bedeutet, daß alle Werte für jeden Schlüssel werden zusammen gruppiert.

Im Falle der recht einfach Beispielanwendung, gibt es nur eine einzige Druckminderer, so dass alle die Ausgabe des Mapper Aufgabe in eine einzelne Datei geschrieben wird. Aber in Fällen mit mehreren Reduzierungen, kann jeder Mapper Aufgabe auch mehrere Ausgabedateien erzeugen.

Die Aufteilung dieser Ausgabedateien wird auf dem Partitionierungsschlüssel basiert. wenn es nur drei verschiedene Partitionierungsschlüssel-Ausgabe für die Mapper Aufgaben sind zum Beispiel, und Sie haben drei Reduzierungen für den Job konfiguriert, wird es drei Mapper Ausgabedateien sein. In diesem Beispiel, wenn eine bestimmte Aufgabe mapper einen Eingangs Split verarbeitet und erzeugt Ausgangs mit zwei der drei Tasten, gibt es nur zwei Ausgabedateien sein.

komprimieren Sie immer Ihre Ausgabedateien "Mapper Aufgaben. Der größte Vorteil ist hier in Performance-Gewinne, weil das Schreiben kleinere Ausgabedateien die unvermeidliche Kosten für die Übertragung der Mapper Ausgabe an den Knoten minimiert, wo die Reduzierungen laufen.

Die Standard-Partitionierungsprogramm ist mehr als ausreichend in den meisten Fällen, aber manchmal können Sie anpassen möchten, wie die Daten partitioniert wird, bevor es durch die Reduzierungen verarbeitet wird. Zum Beispiel können Sie die Daten in Ihrem Ergebnis wollen setzt durch den Schlüssel und ihre Werte sortiert werden - bekannt als Sekundär Sortieren.

Um dies zu tun, können Sie die Standard-Partitionierungsprogramm außer Kraft setzen und Ihre eigenen implementieren. Dieser Prozess erfordert eine gewisse Sorgfalt, aber, weil Sie sicherstellen wollen, werden feststellen, dass die Anzahl der Datensätze in jeder Partition einheitlich ist. (Wenn ein Minderer viel mehr Daten als die anderen Reduzierungen zu verarbeiten hat, werden Sie für Ihre MapReduce Job warten zu beenden, während die einzelnen lasteten Minderer durch seine unproportional großen Datensatz schuften.)

Unter Verwendung einheitlicher Größe Zwischendateien können Sie besser nutzen Sie die Parallelität in MapReduce Verarbeitung.

Menü