Geek Dirt

Apr 24, 2021

Im ersten Beitrag der Hadoop-Serie Einführung in Hadoop und Ausführen eines Map-Reduce-Programms habe ich die Grundlagen von Map-Reduce erläutert. In diesem Beitrag erkläre ich die verschiedenen Komponenten wie Partitionierung, Shuffle, Combiner, Zusammenführen, Sortieren und dann, wie es funktioniert.

Partitionierung:

Wenn die Anzahl der Reduzierer 2 ist und die Hash-Funktion:

#This function would return the data passes in itfunction hash(data){#this is just for example purposereturn data;}

dann für Schlüssel 1:

Partitionsnummer = Hash(1) % 2 = 1;

für schlüssel 2:

Partitionsnummer = Hash(2) % 2 = 0;

für Schlüssel 4:

Partitionsnummer = Hash(4) % 2 = 0;

Das bedeutet, dass die Ausgabe für Schlüssel 1 in partition_1 und die Ausgabe für Schlüssel 2 und 4 in partition_0 gehen würde.

Shuffle:

In der endgültigen Ausgabe der Map-Aufgabe kann es mehrere Partitionen geben, und diese Partitionen sollten in eine andere Reduce-Aufgabe gehen. Das Mischen ist im Grunde das Übertragen von Map-Ausgabepartitionen auf die entsprechenden Reduce-Tasks. Kartenaufgabe benachrichtigt den Anwendungsmaster über den Abschluss der Kartenaufgabe, und der Anwendungsmaster benachrichtigt den entsprechenden Reduzierer, die Kartenausgabe in den Reduzierer zu kopieren.

Kombinierer:

Sortierung:

Es werden nur die Daten basierend auf Schlüsseln sortiert.

Zusammenführen:

Dies geschieht auf der Reduziererseite. Reducer kann Daten von mehreren Kartenaufgaben abrufen und durch Zusammenführen die Daten verschiedener Kartenaufgaben in einer einzigen Einheit zusammenführen, wobei die Sortierreihenfolge beibehalten wird.

Karte-Reduzieren im Detail:

Karte:

Es hat einen im Speicher circular buffer und es schreibt direkt in den Puffer. Wenn der Puffer den Schwellenwert erreicht (Standard 80%), beginnt er über einen separaten background thread in spill file zu schreiben. Map Task kann seine Ausgabe weiterhin in den Puffer schreiben, während der Hintergrundthread ausgeführt wird. Vor dem Schreiben in eine Datei wird die Ausgabe von Schlüssel-Wert-Paaren partitioniert und sortiert. Wenn ein Combiner vorhanden ist, wird er auch ausgeführt, wodurch die Ausgabegröße reduziert wird.

Nach der Aufgabe werden alle Spill-Dateien erneut sortiert und eine einzelne Datei erstellt, die partitioniert und sortiert wird. Bedeutet, dass diese endgültige Ausgabedatei mehrere Partitionen hat. Nachdem die Kartenaufgabe für einen Knoten abgeschlossen ist, wird ihre Ausgabe an den Reduzierer gesendet. Aus diesem Grund wird die Aufgabe um mehr als 0% reduziert, während die Karte weniger als <100% beträgt.

Wenn Sie eine Map-Only-Aufgabe haben, wird überhaupt nicht gemischt, was bedeutet, dass Mapper die endgültige Ausgabe direkt in das HDFS schreiben.

Reduzieren:

Nach dem Abrufen von Daten aus der Kartenaufgabe werden die Daten während des merge phase zu einer einzigen Einheit zusammengeführt. Anstatt alle Dateien direkt zu einer zusammenzuführen, wird das Konzept für merge factor verwendet , um die auf die Festplatte geschriebene Datenmenge zu minimieren. Während der Reduzierungsphase wird dann die Reduzierfunktion für jeden Schlüssel in der sortierten Ausgabe aufgerufen. Die Ausgabe dieser Phase wird direkt in das Ausgabedateisystem geschrieben, typischerweise HDFS.

Nützliche Links:

Einführung und Verarbeitung von Garn

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.