Was läuft zuerst: der Partitionierer oder der Kombinierer?

8

Ich habe mich gefragt, zwischen Partitionierer und Combiner, der zuerst läuft?

Ich war der Meinung, dass es zuerst der Partitiner und dann der Combiner ist und dann werden die Schlüssel zu verschiedenen Reduzierern umgeleitet, was wie der Partitionierer aussieht, und so bin ich verwirrt. Bitte hilf mir zu verstehen.

    
user2345694 27.02.2014, 06:56
quelle

7 Antworten

23

Die direkte Antwort auf Ihre Frage ist = & gt; KOMBINIERER

Details: Combiner kann in der Kartenphase als Mini-Reduzierer angesehen werden. Sie führen eine lokale Reduzierung der Mapper-Ergebnisse durch, bevor sie weiter verteilt werden. Sobald die Combiner-Funktionalität ausgeführt wurde, wird sie für weitere Arbeiten an den Reducer weitergeleitet.

wo wie

Der Partitionierer kommt in das Bild, wenn wir einen mehr als auf Reduzierer arbeiten. Der Partitionierer entscheidet also, welcher Reducer für einen bestimmten Schlüssel verantwortlich ist. Sie nehmen grundsätzlich das Mapper-Ergebnis (wenn Combiner verwendet wird, dann Combiner-Ergebnis) und senden es basierend auf dem Schlüssel an den zuständigen Reducer.

Zum besseren Verständnis können Sie das folgende Bild verwenden, das ich aus dem Yahoo Developer Tutorial auf Hadoop übernommen habe.

Hier ist das Tutorial .

    
addicted20015 27.02.2014, 13:01
quelle
3

Partition kommt zuerst.

Laut "Hadoop, dem definitiven Leitfaden", wird die Ausgabe von Mapper zuerst in den Speicherpuffer geschrieben und dann an den lokalen Ordner übergeben, wenn der Puffer überläuft. Die überlaufenden Daten werden nach Partitioner aufgeteilt und in jeder Partition wird das Ergebnis sortiert und kombiniert, wenn Combiner angegeben wird.

Sie können das Wordcount-MR-Programm einfach ändern, um es zu überprüfen. Mein Ergebnis ist: ("Der schnelle braune Fuchs sprang über einen faulen Hund")

Wort, Schritt, Zeit

Fuchs, Mapper, ********** 754

Fuchs, Partitionierer, ********** 754

Fuchs, Kombinierer, ********** 850

Fuchs, Reduzierer, ********** 904

Offensichtlich läuft Combiner nach Partitionierer.

    
Mike Song 02.09.2014 05:23
quelle
2

combiner läuft vor partitiooner

Combiner wird nach map ausgeführt, um die Elementanzahl der Kartenausgabe zu reduzieren. So verringern Sie die Netzwerküberlastung. Reduziere Läufe nach dem Partitionierer

    
michaeltang 27.02.2014 07:09
quelle
1

Combiner ist ein Kartenseitenreduzierer. Es bedeutet, dass der Reduzierer alles durch den Kombinierer durchführt. Die Hauptanwendung des Combiners ist eine Optimierung / Optimierung der Performance. Nachdem der Combiner den Code optimiert hat, trennt sich der Petent und hilft, mehrere Outputs zu erhalten. Combiner ist optional, aber für große Dateien sehr zu empfehlen.

Der Partitionierer teilt die Daten entsprechend der Anzahl der Reduzierungen und hängt von den Anforderungen ab, die die Ausgabe trennt. Zum Beispiel: Der Ausgang männlich, weiblich, separate 2 Ausgänge mit Partitionierer.

Erster Combiner wird kommen, dann kommt Partitionierer, beide kommen nur in Mapside, aber nicht in der Reducer-Seite.

    
Venu A Positive 04.12.2014 05:02
quelle
0

In Hadoop - Die definitive Anleitung 3. Ausgabe, Seite 209, haben wir folgende Worte:

  

Vor dem Schreiben auf die Festplatte teilt der Thread die Daten zuerst in Partitionen auf, die den Reduzierungen entsprechen, an die sie letztendlich gesendet werden. Innerhalb jeder Partition führt der Hintergrundthread eine sortweise Sortierung nach Schlüssel durch, und wenn eine Kombiniererfunktion vorhanden ist, wird sie auf der Ausgabe der Sortierung ausgeführt. Die Ausführung der Combiner-Funktion ermöglicht eine kompaktere Kartenausgabe, sodass weniger Daten auf die lokale Festplatte geschrieben und an den Reducer übertragen werden müssen.

     

Jedes Mal, wenn der Speicherpuffer den Überlaufschwellenwert erreicht, wird eine neue Überlaufdatei erstellt. Nachdem der Map-Task seinen letzten Ausgabedatensatz geschrieben hat, könnte es mehrere Überlaufdateien geben. Bevor die Task beendet wird, werden die Überlaufdateien in eine einzelne partitionierte und sortierte Ausgabedatei zusammengeführt. Die Konfigurationseigenschaft io.sort.factor steuert die maximale Anzahl von Streams, die gleichzeitig zusammengeführt werden sollen. Der Standardwert ist 10.

     

Wenn mindestens drei Überlaufdateien vorhanden sind (festgelegt durch die Eigenschaft min.num.spills.for.combine), wird der Combiner erneut ausgeführt, bevor die Ausgabedatei geschrieben wird. Es sei daran erinnert, dass Kombinierer wiederholt über den Eingang laufen können, ohne das Endergebnis zu beeinflussen. Wenn es nur ein oder zwei Überläufe gibt, ist die potentielle Verringerung der Kartenausgabegröße den Overhead beim Aufrufen des Kombinierers nicht wert, so dass sie für diese Kartenausgabe nicht erneut ausgeführt wird. Der Kombinierer wird während der Verschmelzungsdatei ausgeführt.

So scheint es die Antwort zu sein:

Karte - & gt; Trennzeichen - & gt; Sortieren - & gt; Kombinierer - & gt; Verschütten - & gt; Kombinierer (falls verschüttet & gt; = 3) - & gt; Zusammenführen.

Jedoch in Apache Tutorial gibt es unter den Wörtern:

  

Die Mapper-Ausgänge werden sortiert und dann pro Reducer partitioniert.

Der Inhalt unterscheidet sich von der endgültigen Anleitung. Die Antwort hier scheint zu sein:

Karte - & gt; Sortieren - & gt; Kombinierer - & gt; Trennzeichen - & gt; Verschütten - & gt; Kombinierer (falls verschüttet & gt; = 3) - & gt; Zusammenführen.

Welcher ist richtig? Ich lehne mich an, um den späteren im Apache Tutorial zu akzeptieren, aber nicht ganz sicher.

    
Ken Chen 05.07.2016 01:15
quelle
0

Combiner ändert das Schlüsselwertpaar der Ausgabezuordnungsaufgabe nicht. Es kombiniert basierend auf demselben Schlüssel und gibt das gleiche Schlüssel / Liste-Wertpaar aus.

Partitionierer nimmt die Eingabe von map / combiner (falls vorhanden), segmentiert dann die Daten und kann ein neues K-Listenwert-Paar ausgeben.

so Karte - & gt; Kombinieren- & gt; Partition - & gt; Reduzieren.

    
user3423890 07.01.2017 17:32
quelle
-1

Mapper - & gt; Kombinierer - & gt; Partitionar - & gt; Minderer

    
Sanjeev Pandey 08.06.2016 13:33
quelle

Tags und Links