„MapReduce“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Inhalt gelöscht Inhalt hinzugefügt
K →Beispielhafte Berechnung: BKL aufgelöst |
→Beispielhafte Berechnung: offensichtliche Fehler und Unklarheiten korrigiert (verifiziert mit Hadoop-Ausgabe), trotzdem ist der beschriebene Ablauf noch irreführend |
||
Zeile 135:
("segen", 1), ("kommt", 1), ("von", 1), ("oben", 1) ]</code>
Die Map-Prozesse liefern ihre Paare an das MapReduce Framework, welches diese in den Zwischenergebnislisten sammelt. Parallel könnte folgendes geschehen (Die gleiche Taktung der 3 Map-Prozesse ist unrealistisch, tatsächlich überlappen sich die Ausführungen. Die T_wort-Listen sind lokal pro Map-Prozess vorhanden und werden *nicht* zwischen den Schritten synchronisiert):
<code>
Zeile 153:
T_stirne = [ 1 ], neu</code>
Im vierten Schritt
<code>
4. Schritt:
T_der = [ 1 ], neu (der 1.
T_glocke = [ 1 ], neu
T_heiss = [ 1], neu
Zeile 169:
T_steht = [ 1 ], neu
T_frisch = [ 1 ], neu
T_muß = [ 1 ],
Im siebten Schritt kommt dann zum ersten Mal vor, dass ein weiteres Vorkommen in einer bereits angelegten Zwischenergebnisliste gesammelt wird:
<code>
7. Schritt
T_die = [ 1 ], neu (der 1. Map-Prozess hat noch kein T_die!)
T_gesellen = [ 1 ], neu
T_der = [ 1, 1 ], beim 3. Map-Prozess seit Schritt 2 vorhandene Liste verwenden</code>
usw.
Nach
Die Zwischenergebnislisten, die von verschiedenen Map-Prozessen zu demselben Wort angelegt wurden, werden zusammengefügt.
Für jede der entstandenen Zwischenergebnislisten (hier sortiert aufgeführt)
<code>
reduce
T_gemauert = [ 1 ] -> [ 1 ]
usw.
▲ usw.</code>
können wir parallel einen Reduce-Prozess starten, der jeweils die Elemente aufzählt.
Das Ergebnis von MapReduce sieht in etwa so <code>
|