Zuerst shuffling
geht es darum, Daten von den Mappern zu den Reduzierern zu übertragen. Ich denke, es ist offensichtlich, dass dies für die Reduzierer notwendig ist, da sie sonst keine Eingabe (oder Eingabe von jedem Mapper) erhalten könnten. . Das Mischen kann bereits vor Abschluss der Kartenphase beginnen, um Zeit zu sparen. Aus diesem Grund wird ein Reduzierungsstatus von mehr als 0% (aber weniger als 33%) angezeigt, wenn der Kartenstatus noch nicht 100% beträgt.
Sorting
spart Zeit für den Reduzierer und hilft ihm leicht zu erkennen, wann eine neue Reduzierungsaufgabe beginnen sollte. Es wird einfach eine neue Reduzierungsaufgabe gestartet, wenn der nächste Schlüssel in den sortierten Eingabedaten anders ist als der vorherige, um es einfach auszudrücken. Jede Reduktionsaufgabe benötigt eine Liste von Schlüssel-Wert-Paaren, muss jedoch die Methode redu () aufrufen, die eine Eingabe für die Schlüsselliste (Wert) akzeptiert, sodass Werte nach Schlüssel gruppiert werden müssen. Dies ist einfach, wenn die Eingabedaten in der Kartenphase (lokal) vorsortiert und in der Reduzierungsphase einfach zusammengeführt werden (da die Reduzierer Daten von vielen Mappern erhalten).
Partitioning
, die Sie in einer der Antworten erwähnt haben, ist ein anderer Prozess. Es bestimmt, in welchem Reduzierer ein (Schlüssel-, Wert-) Paar, Ausgabe der Kartenphase, gesendet wird. Der Standard-Partitionierer verwendet ein Hashing für die Schlüssel, um sie an die Reduzierungsaufgaben zu verteilen. Sie können es jedoch überschreiben und Ihren eigenen benutzerdefinierten Partitionierer verwenden.
Eine gute Informationsquelle für diese Schritte ist dieses Yahoo-Tutorial .
Eine schöne grafische Darstellung davon ist die folgende (Shuffle wird in dieser Abbildung als "Kopie" bezeichnet):
Beachten Sie, dass shuffling
und sorting
überhaupt nicht ausgeführt werden, wenn Sie Nullreduzierer angeben (setNumReduceTasks (0)). Dann stoppt der MapReduce-Job in der Kartenphase, und die Kartenphase enthält keine Sortierung (sodass selbst die Kartenphase schneller ist).
UPDATE: Da Sie nach etwas Offiziellerem suchen, können Sie auch Tom Whites Buch "Hadoop: The Definitive Guide" lesen. Hier ist der interessante Teil für Ihre Frage.
Tom White ist seit Februar 2007 ein Apache Hadoop-Committer und Mitglied der Apache Software Foundation. Ich denke, es ist ziemlich glaubwürdig und offiziell ...