Heim  >  Artikel  >  Wie nennt man den vom System durchgeführten Sortiervorgang?

Wie nennt man den vom System durchgeführten Sortiervorgang?

青灯夜游
青灯夜游Original
2021-04-25 17:10:191653Durchsuche

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.

Wie nennt man den vom System durchgeführten Sortiervorgang?

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 wird als Eingabe verwendet Das heißt, der Eingang und der Ausgang des Combiners müssen gleich sein.

    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). ).

  • Sie können die Partitioner-Klasse über die Methode job.setPartitionerClass angeben. Standardmäßig wird HashPartitioner verwendet (standardmäßig wird die hashCode-Methode des Schlüssels aufgerufen).
  • Benutzerdefinierte Gruppe

    GroupingComparator ist eine Schlüsselklasse, die zum Gruppieren und Kombinieren der von Map ausgegebenen Werte in verwendet wird Um festzustellen, ob Schlüssel1 und Schlüssel2 zur gleichen Gruppe gehören, kombinieren Sie in diesem Fall die Ausgabewerte der Karte.

  • Erfordert unsere benutzerdefinierte Klasse, um die Selbstschnittstelle RawComparator zu implementieren, und die Vergleichsklasse kann über die Methode job.setGroupingComparatorClass angegeben werden. Standardmäßig wird WritableComparator verwendet, zum Vergleich wird jedoch letztendlich die Methode „compareTo“ des Schlüssels aufgerufen.
  • Benutzerdefinierte Sortierung

    SortComparator ist die Schlüsselklasse, die zum Sortieren der Schlüssel der Kartenausgabe verwendet wird. Um es ganz klar auszudrücken: Sie wird verwendet, um zu bestimmen, zu welcher Gruppe Schlüssel1 und Schlüssel2 gehört . Das ist hinten.

  • Erfordert unsere benutzerdefinierte Klasse, um die Selbstschnittstelle RawComparator zu implementieren, und die Vergleichsklasse kann über die Methode job.setSortComparatorClass angegeben werden. Standardmäßig wird WritableComparator verwendet, zum Vergleich wird jedoch letztendlich die Methode „compareTo“ des Schlüssels aufgerufen.
  • 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn