bigdata:mapreduce
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
bigdata:mapreduce [2015/10/05 20:39] – [Hintergrund] brueck | bigdata:mapreduce [2015/10/05 20:40] (aktuell) – [Beispiel] brueck | ||
---|---|---|---|
Zeile 16: | Zeile 16: | ||
Im ersten Schritt eines MapReduce-Jobs werden die Input-Daten in Segmente unterteilt, die auf verschiedene Maschinen verteilt werden. Jede dieser Maschinen verarbeitet ihr Datensegment zu Key-Value-Paaren, | Im ersten Schritt eines MapReduce-Jobs werden die Input-Daten in Segmente unterteilt, die auf verschiedene Maschinen verteilt werden. Jede dieser Maschinen verarbeitet ihr Datensegment zu Key-Value-Paaren, | ||
- | Um möglichst wenige Daten über das Netzwerk senden zu müssen, kann die Ergebnismenge einer Map-Funktion mit einer optionalen **Combiner**-Funktion reduziert werden. Sie nutzt dabei den im Hauptspeicher befindlichen Mapper-Output als Input (noch bevor dieser als Zwischenergebnis auf Disk gespeichert wird) und rechnet alle Werte desselben Schlüssels zusammen, sodass zu jedem Schlüssel nur noch ein Wert existiert. Der Unterschied zur Reduce-Funktion ist nur der, dass der Combiner-Output als Zwischenergebnis gespeichert wird, der dann an den Reducer gesendet wird, wohingegen der Reducer-Output als Datei im Dateisystem abgelegt wird. (Vgl. [[bigdata: | + | Um möglichst wenige Daten über das Netzwerk senden zu müssen, kann die Ergebnismenge einer Map-Funktion mit einer optionalen **Combiner**-Funktion reduziert werden. Sie nutzt dabei den im Hauptspeicher befindlichen Mapper-Output als Input (noch bevor dieser als Zwischenergebnis auf Disk gespeichert wird) und rechnet alle Werte desselben Schlüssels zusammen, sodass zu jedem Schlüssel nur noch ein Wert existiert. Der Unterschied zur Reduce-Funktion ist nur der, dass der Combiner-Output als Zwischenergebnis gespeichert wird, der dann an den Reducer gesendet wird, wohingegen der Reducer-Output als Datei im Dateisystem abgelegt wird. (Vgl. [[bigdata: |
Im sogenannten „**Shuffling**“ werden die Ergebnisdaten der Mapper von den Reducer eingelesen und anschließend nach ihrem Schlüssel sortiert und gruppiert. Der **Reduce**-Funktion werden dann nacheinander ein Schlüssel mit dem Satz seiner zugehörigen Werte zur Verarbeitung übergeben. Die Ausgabe wird dann an ein finales Output-File angehängt. | Im sogenannten „**Shuffling**“ werden die Ergebnisdaten der Mapper von den Reducer eingelesen und anschließend nach ihrem Schlüssel sortiert und gruppiert. Der **Reduce**-Funktion werden dann nacheinander ein Schlüssel mit dem Satz seiner zugehörigen Werte zur Verarbeitung übergeben. Die Ausgabe wird dann an ein finales Output-File angehängt. | ||
Zeile 27: | Zeile 27: | ||
{{ : | {{ : | ||
- | (Bild-Quelle: | + | (Bild-Quelle: |
MapReduce eignet sich also für Probleme, die sich in Unteraufgaben teilen lassen, die durch die Map-Funktion individuell und unabhängig voneinander bearbeitet werden können. Die Ergebnisse der Unteraufgaben müssen sich wiederum unabhängig durch die Reduce-Funktionen zusammentragen lassen. Nur so lassen sich die Aufgaben auf ein großes Rechner-Cluster verteilen und effizient massiv parallel verarbeiten. | MapReduce eignet sich also für Probleme, die sich in Unteraufgaben teilen lassen, die durch die Map-Funktion individuell und unabhängig voneinander bearbeitet werden können. Die Ergebnisse der Unteraufgaben müssen sich wiederum unabhängig durch die Reduce-Funktionen zusammentragen lassen. Nur so lassen sich die Aufgaben auf ein großes Rechner-Cluster verteilen und effizient massiv parallel verarbeiten. |
bigdata/mapreduce.txt · Zuletzt geändert: 2015/10/05 20:40 von brueck