Welche verschiedenen Klassen von datenwissenschaftlichen Problemen können mit dem Mapreduce-Programmiermodell gelöst werden?
quelle
Welche verschiedenen Klassen von datenwissenschaftlichen Problemen können mit dem Mapreduce-Programmiermodell gelöst werden?
Lassen Sie es uns zuerst in Teile teilen.
Bei Data Science geht es darum, Wissen aus Rohdaten zu gewinnen. Es verwendet maschinelles Lernen, Statistiken und andere Bereiche, um die Entscheidungsfindung zu vereinfachen (oder sogar zu automatisieren). Datenwissenschaftliche Techniken können mit jeder Datengröße funktionieren, aber mehr Daten bedeuten bessere Vorhersagen und damit präzisere Entscheidungen.
Hadoop ist eine gebräuchliche Bezeichnung für eine Reihe von Tools, die für die Arbeit mit großen Datenmengen vorgesehen sind. Zwei der wichtigsten Komponenten in Hadoop sind HDFS und MapReduce.
HDFS oder Hadoop Distributed File System ist ein spezieller verteilter Speicher, der sehr große Datenmengen aufnehmen kann. Große Dateien in HDFS werden in Blöcke aufgeteilt, und für jeden Block legt die HDFS-API ihren Speicherort offen .
MapReduce ist ein Framework zum Ausführen von Berechnungen auf Knoten mit Daten. MapReduce verwendet stark Datenlokalität durch HDFS ausgesetzt: wenn möglich, Daten zwischen den Knoten nicht übertragen werden, sondern stattdessen Code auf die Knoten mit Daten kopiert werden.
Grundsätzlich kann jedes Problem (einschließlich datenwissenschaftlicher Aufgaben), das nicht gegen das Prinzip der Datenlokalität verstößt, mit MapReduce effizient implementiert werden (und eine Reihe anderer Probleme können möglicherweise nicht so effizient, aber immer noch einfach genug gelöst werden).
Nehmen wir einige Beispiele. Sehr oft benötigt der Analyst nur einige einfache Statistiken über seine tabellarischen Daten. In diesem Fall funktioniert Hive , im Grunde eine SQL-Engine über MapReduce, ziemlich gut (es gibt auch Impala, Shark und andere, aber sie verwenden nicht Hadoops MapReduce, also später mehr dazu).
In anderen Fällen möchten Analysten (oder Entwickler) möglicherweise mit zuvor unstrukturierten Daten arbeiten. Pure MapReduce eignet sich hervorragend zum Transformieren und Standardisieren von Daten.
Einige Leute sind es gewohnt, Statistiken und Visualisierungen mit Tools wie R zu untersuchen. Dieser Ansatz kann mit dem RHadoop- Paket auf große Datenmengen angewendet werden.
Und wenn es um MapReduce-basiertes maschinelles Lernen geht, ist Apache Mahout der erste, der dies erwähnt.
Es gibt jedoch eine Art von Algorithmen, die auf Hadoop selbst bei Vorhandensein von Datenlokalität ziemlich langsam arbeiten, nämlich iterative Algorithmen. Iterative Algorithmen haben in der Regel mehrere Map- und Reduce-Stufen. Das MR-Framework von Hadoop liest und schreibt Daten auf jeder Stufe (und manchmal auch dazwischen) auf die Festplatte, was iterative (sowie mehrstufige) Aufgaben erheblich verlangsamt.
Glücklicherweise gibt es alternative Frameworks, die sowohl die Datenlokalität nutzen als auch Daten zwischen den Phasen im Speicher behalten können. Am bemerkenswertesten ist wahrscheinlich Apache Spark . Spark ist ein vollständiger Ersatz für MapReduce von Hadoop, das seine eigene Laufzeit verwendet und eine ziemlich umfangreiche API für die Bearbeitung Ihres verteilten Datasets bereitstellt. Spark hat mehrere Teilprojekte, die eng mit der Datenwissenschaft verbunden sind:
Es gibt also ziemlich viele datenwissenschaftliche Probleme, die Sie mit Hadoop und verwandten Projekten lösen können.
So basically any problem that doesn't break data locality principle may be efficiently implemented using MapReduce
. Nach meinem Verständnis können Sie nur Probleme lösen, die mit dem MapReduce-Muster ausgedrückt werden können.Data Science hat viele verschiedene Unterbereiche, wie in meinem Beitrag beschrieben . Fast für jeden Bereich haben Wissenschaftler und Entwickler bedeutende Beiträge geleistet. Um mehr darüber zu erfahren, was getan werden kann, besuchen Sie bitte die folgenden Websites:
Es gibt auch einige Arbeiten an der MapReduce + Excel + Cloud-Kombination, aber ich habe den Link nicht gefunden.
Jede "Klasse" ist keine rein homogene Problemdomäne, dh einige Probleme können aufgrund ihrer Kommunikationskosten oder ihres Algorithmusverhaltens nicht über eine Karte gelöst und der Ansatz reduziert werden. Was ich unter Verhalten verstehe, ist, dass ein Problem die Kontrolle über alle Datensätze anstelle von Blöcken haben möchte. Daher lehne ich es ab, die Art des Problems "Klassen" aufzulisten.
Vergessen Sie nicht, dass es für Data Science nicht ausreicht, zu wissen, was MapReduce kann. Sie sollten auch wissen, was MapReduce nicht kann .
quelle
Es gibt ein Papier, in das Sie schauen sollten:
MapReduce: Distributed Computing für maschinelles Lernen
Sie unterscheiden drei Klassen von Problemen des maschinellen Lernens, die mit MapReduce sinnvoll angegangen werden können:
Sie geben auch Beispiele für jede Klasse.
quelle
Map / Reduce eignet sich am besten für parallelisierbare Offline-Berechnungen. Genauer gesagt funktioniert es am besten, wenn das Ergebnis aus dem Ergebnis einer Funktion einer Partition der Eingabe ermittelt werden kann. Die Mittelwertbildung ist ein triviales Beispiel. Sie können dies mit map / redu tun, indem Sie jede Partition summieren, die Summe und die Anzahl der Elemente in der Partition zurückgeben und dann den Gesamtmittelwert anhand dieser Zwischenergebnisse berechnen. Es ist weniger geeignet, wenn die Zwischenschritte vom Status der anderen Partitionen abhängen.
quelle