diff --git "a/de/01-Design-patterns-f\303\274r-grosse-Datenmengen.ipynb" "b/de/01-Design-patterns-f\303\274r-grosse-Datenmengen.ipynb" index 3267042ff14f92f6db000782b6b006af935ed1d6..e5eeed2e515aa547cf40133f19f89e1c318a2c0a 100644 --- "a/de/01-Design-patterns-f\303\274r-grosse-Datenmengen.ipynb" +++ "b/de/01-Design-patterns-f\303\274r-grosse-Datenmengen.ipynb" @@ -428,7 +428,7 @@ "Zu beachten ist bei Caching vor allem, dass die Datenkonsistenz gewährleistet werden sollte. Dazu gibt es \n", "verschiedene Ansätze, je nach Anwendung. \n", "\n", - "_Diskussion über verschiedene Anwendungsfälle und deren Auswirkungen auf den Cachine-Mechanismus_\n", + "_Diskussion über verschiedene Anwendungsfälle und deren Auswirkungen auf den Caching-Mechanismus_\n", "\n", "Ferner sollte man überlegen, ob es eine Bevorzugung bestimmter Daten geben sollte, die z.B. besonders\n", "häufig nachgefragt werden oder besonders aufwendig zu berechnen sind. Und dann spielt bei der Auslegung \n", @@ -530,9 +530,9 @@ "\n", "Das __MapReduce__ framework erlaubt es, mit relativ einfachen Befehlen prallele Datenprozessierung von TByte-scale Datensätzen auf einem verteilten System mit bis zu mehreren Tausend Knoten auszuführen. Vom Konzept her werden Inputdaten in Chunks aufgeteilt (siehe oben), die dann parallel berechnet werden können (\"mapping\"). Die Ergebnisse dieser Rechnungen werden anschließend im \"Reduce\" Schritt zusammengeführt. Dabei werden __key, value__ Paare benutzt.\n", "\n", - "und an die reduce-Funktion übergeben Der/die Nutzer:in schreibt eine __map__ Funktion, dieaus einem Input Key-Value-Paar ein Output Key-Value-Paar mit einem intermediären Schlüssel (= key) erzeugt. Ferner erstellt er/sie eine __reduce__ Funktion, welche alle Daten mit demselben Schlüssel zusammenführt (= merge). Typischerweise erzeugt eine reduce-Operation genau einen oder keinen Outputwert. Die MapReduce Bibliothek sorgt dafür, dass alle Key-Value-Paare mit demselben Schlüssel zusammengeführt werden.\n", + "Der/die Nutzer:in schreibt eine __map__ Funktion, die aus einem Input Key-Value-Paar ein Output Key-Value-Paar mit einem intermediären Schlüssel (= key) erzeugt. Ferner erstellt er/sie eine __reduce__ Funktion, welche alle Daten mit demselben Schlüssel zusammenführt (= merge). Typischerweise erzeugt eine reduce-Operation genau einen oder keinen Outputwert. Die MapReduce Bibliothek sorgt dafür, dass alle Key-Value-Paare mit demselben Schlüssel zusammengeführt werden.\n", "\n", - "Hier ein Beispiel für eine map und eien reduce Funktion zum Zählen von Wörtern in eine rgroßen Menge an text-Dokumenten aus dem Original-Artikel:\n", + "Hier ein Beispiel für eine map und eine reduce Funktion zum Zählen von Wörtern in einer großen Menge an text-Dokumenten aus dem Original-Artikel:\n", "\n", "```Java\n", "map(String key, String value):\n", @@ -550,7 +550,7 @@ " Emit(AsString(result));\n", "```\n", "\n", - "_Originalpaper: Jeffrey Dean Sanjay Ghemawat (2004): MapReduce: Simplified Data Processing on Large Clusters, OSDI'04: Sixth Symposium on Operating System Design and Implementation, San Francisco, CA (2004), pp. 137-150._\n", + "_Original Paper: Jeffrey Dean Sanjay Ghemawat (2004): MapReduce: Simplified Data Processing on Large Clusters, OSDI'04: Sixth Symposium on Operating System Design and Implementation, San Francisco, CA (2004), pp. 137-150._\n", "\n", "Die Resourcenverwaltung obliegt __YARN__, das aus einem __ResourceManager__ für das Gesamtsystem, jeweils einem __NodeManager__ pro Cluster-Knoten und jeweils einem __MRAppMaster__ pro Anwendung besteht. Jede MapReduce Anwendung wird durch eine Konfigursation beschrieben, die zumindest die Input- und Outputdaten spezifiziert und die auszuführenden __map__ und __reduce__ Kommandos. YARN übernimmt das Scheduling, überwacht die Ausführung der einzelnen Tasks und startet abgebrochene Jobs erneut falls nötig. Hadoop ist damit vor allem für Batch-Anwendungen ausgelegt. Die Berechnungen werden möglichst dort ausgeführt, wo die Daten liegen, so dass unnötige Datentransfers vermieden werden.\n" ]