MapReduce stellt sicher, dass die Eingabe jedes Reduzierers nach Schlüssel sortiert wird und der vom System durchgeführte Sortiervorgang als Shuffle bezeichnet wird. Die Mischphase umfasst hauptsächlich Kombinieren, Gruppieren, Sortieren, Partitionieren in der Kartenphase und Zusammenführungssortieren in der Reduzierphase.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, Dell G3-Computer.
MapReduce stellt sicher, dass die Eingabe jedes Reduzierers nach Schlüssel sortiert wird und der vom System durchgeführte Sortiervorgang als Shuffle bezeichnet wird. Wir können es als das gesamte Projekt verstehen, bei dem die Karte Ausgabe generiert und Eingaben verarbeitet, um sie zu reduzieren.
Kartenseite: Jede MapperTask verfügt über einen Ringspeicherpuffer, der zum Speichern der Ausgabe der Kartenaufgabe verwendet wird. Sobald der Schwellenwert erreicht ist, schreibt ein Hintergrundthread den Inhalt vor dem Schreiben in eine neu erstellte Überlaufschreibdatei im angegebenen Verzeichnis auf der Festplatte Auf die Festplatte müssen Partition, Sortierung und Kombinierer durchlaufen werden. Nachdem der letzte Datensatz geschrieben wurde, führen Sie alle überlaufgeschriebenen Dateien in einer partitionierten und sortierten Datei zusammen.
Reduzierungsseite: Kann in Kopierphase, Sortierphase und Reduzierungsphase unterteilt werden.
Kopierphase: Die Kartenausgabedatei befindet sich auf der lokalen Festplatte des Tasktrackers, der die Kartenaufgabe ausführt. Reduzieren erhält die Partition der Ausgabedatei über http , und der Tasktracker ist die Partitionsdatei. Führen Sie die Reduzierungsaufgabe aus. Sobald eine Kartenaufgabe abgeschlossen ist, beginnt die Reduzierungsaufgabe mit dem Kopieren der Ausgabe.
Sortierphase: Ein passenderer Begriff ist die Zusammenführungsphase, da die Sortierung auf der Kartenseite erfolgt. In dieser Phase wird die Kartenausgabe zusammengeführt, ihre Reihenfolge beibehalten und eine Schleife erstellt.
Die letzte Stufe ist die Reduzierungsstufe. Die Reduzierungsfunktion wird für jeden Schlüssel in der sortierten Ausgabe aufgerufen. Die Ausgabe dieser Stufe wird direkt in das Ausgabedateisystem geschrieben, normalerweise HDFS. ,
Beschreibung der Shuffle-Phase
Die Shuffle-Phase umfasst hauptsächlich Kombinieren, Gruppieren, Sortieren, Partitionieren in der Kartenphase und Zusammenführungssortieren in der Reduzierphase. Nach dem Mischen in der Map-Phase werden die Ausgabedaten entsprechend den reduzierten Partitionen in Dateien gespeichert und der Dateiinhalt wird gemäß der definierten Sortierung sortiert. Nachdem die Map-Phase abgeschlossen ist, wird der ApplicationMaster benachrichtigt, und dann benachrichtigt der AM den Reduce, um die Daten abzurufen, und führt während des Pull-Vorgangs den Shuffle-Prozess auf der Reduzierungsseite durch.
Hinweis: Die Ausgabedaten der Map-Stufe werden auf der Festplatte gespeichert, auf der der Map-Knoten ausgeführt wird. Es handelt sich um eine temporäre Datei, die nicht auf HDFS vorhanden ist. Nach dem Abrufen der Daten wird die temporäre Datei gelöscht HDFS führt zu Speicherplatzverlust (es werden drei Kopien erstellt).
Benutzerdefinierter Combiner
Combiner kann die Anzahl der Zwischenausgabeergebnisse in der Kartenphase reduzieren und den Netzwerkaufwand reduzieren. Standardmäßig gibt es keinen Combiner. Der benutzerdefinierte Combiner muss eine Unterklasse von Reducer sein. Die Ausgabe
Sie können die Combiner-Verarbeitungsklasse über job.setCombinerClass festlegen. Das MapReduce-Framework garantiert nicht, dass die Methode dieser Klasse aufgerufen wird.
Hinweis: Wenn die Eingabe und Ausgabe der Reduzierung gleich sind, können Sie die Reduzierungsklasse direkt als Kombinierer verwenden Kartenausgabe. Welcher Verarbeitungsreduzierer ist der entsprechende Knoten? Die Standardreduzierungsnummer der MapReduce-Aufgabe ist 1. Zu diesem Zeitpunkt hat der Partitionierer tatsächlich keine Auswirkung. Wenn wir jedoch die Anzahl der Reduzierungen auf „Mehrfach“ ändern, bestimmt der Partitionierer die Knotennummer der Reduzierung, die dem Schlüssel entspricht (beginnend mit 0). ).
Benutzerdefinierte Gruppe
GroupingComparator ist eine Schlüsselklasse, die zum Gruppieren und Kombinieren der von Map ausgegebenen Werte in
Benutzerdefinierte Sortierung
SortComparator ist die Schlüsselklasse, die zum Sortieren der Schlüssel der Kartenausgabe
Benutzerdefinierter Reducer-Shuffle
Wenn die Reduzierungsseite die Ausgabedaten der Karte abruft, wird ein Shuffle (Zusammenführungssortierung) durchgeführt. Wir können die Schnittstelle im Plug-in-Modus implementieren ShuffleConsumerPlugin und geben Sie den Parameter mapreduce.job.reduce.shuffle.consumer.plugin.class an, um benutzerdefinierte Shuffle-Regeln anzugeben. Im Allgemeinen wird jedoch direkt die Standardklasse org.apache.hadoop.mapreduce.task.reduce.Shuffle verwendet.
Weitere Programmierkenntnisse finden Sie unter: Programmiervideo! !
Das obige ist der detaillierte Inhalt vonWie nennt man den vom System durchgeführten Sortiervorgang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!