Map-reduce:
Die Grundfunktionen des MapReduce-Ansatzes bilden die beiden Funktionen Map und Reduce. Sie sorgen für die Zerlegung der Aufgaben in kleine parallelisierte Arbeitspakete und führen die Ergebnisse anschließend zusammen. Damit lassen sich die typischen Probleme, die klassische relationale Datenbanken mit der Verarbeitung von großen unstrukturierten Datenmengen haben, beseitigen.
Beispiel:
- Map bildet ein Paar, bestehend aus einem Schlüssel und einem Wert , auf eine Liste von neuen Paaren ab, welche die Rolle von Zwischenergebnissen spielen. Die Werte sind vom gleichen Typ wie die Endergebnisse .
- Bei einem neuen Paar verweist der von Map vergebene Schlüssel dabei auf eine Liste von Zwischenergebnissen, in welcher der von Map berechnete Wert gesammelt wird.
- Die Bibliothek ruft für jedes Paar in der Eingabeliste die Funktion Map auf.
- All diese Map-Berechnungen sind voneinander unabhängig, so dass man
sie nebenläufig und verteilt auf einem Computercluster ausführen kann
Shuffle-Phase
- Bevor die Reduce-Phase starten kann, müssen die Ergebnisse der Map-Phase nach ihrem neuen Schlüssel in Listen gruppiert werden.
- Wenn Map- und Reduce-Funktionen nebenläufig und verteilt ausgeführt werden, wird hierfür ein koordinierter Datenaustausch notwendig.
- Die Performanz eines Map-Reduce-Systems hängt maßgeblich davon ab, wie effizient die Shuffle-Phase implementiert ist.
- Der Nutzer wird in der Regel nur über die Gestaltung der Schlüssel
auf die Shuffle-Phase Einfluss nehmen. Daher reicht es, sie einmalig
gut zu optimieren, und zahlreiche Anwendungen können hiervon
profitieren.
Reduce-Phase
- Sind alle Map-Aufrufe erfolgt bzw. liegen alle Zwischenergebnisse in vor, so ruft die Bibliothek für jede Zwischenwertliste die Funktion Reduce auf, welche daraus eine Liste von Ergebniswerten berechnet, die von der Bibliothek in der Ausgabeliste als Paare gesammelt werden.
- Auch die Aufrufe von Reduce können unabhängig auf verschiedene Prozesse im Computercluster verteilt werden.
Map-Phase
Combine-Phase
Optional
kann vor der Shuffle-Phase noch eine Combine-Phase erfolgen. Diese hat
in der Regel die gleiche Funktionalität wie die Reducefunktion, wird
aber auf dem gleichen Knoten wie die Map-Phase ausgeführt. Dabei geht es
darum, die Datenmenge, die in der Shuffle-Phase verarbeitet werden
muss, und damit die Netzwerklast zu reduzieren.[5] Der Sinn der Combine-Phase erschließt sich sofort bei der Betrachtung des Wordcount-Beispiels:
Auf Grund der unterschiedlichen Häufigkeit von Wörtern in natürlicher
Sprache, würde bei einem deutschen Text beispielsweise sehr oft eine
Ausgabe der Form ("und", 1) erzeugt (gleiches gilt für Artikel und
Hilfsverben). Durch die Combine-Phase wird nun aus 100 Nachrichten der
Form ("und", 1) lediglich eine Nachricht der Form ("und", 100). Dies
kann die Netzwerkbelastung signifikant reduzieren, ist aber nicht in
allen Anwendungsfällen möglich.
https://de.talend.com/resources/what-is-mapreduce/
https://de.wikipedia.org/wiki/MapReduce
https://www.bigdata-insider.de/was-ist-mapreduce-a-624936/