Data Science und MapReduce-Programmiermodell von Hadoop

8

Welche verschiedenen Klassen von datenwissenschaftlichen Problemen können mit dem Mapreduce-Programmiermodell gelöst werden?

jithinjustin
quelle

Antworten:

13

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:

  • Shark und Spark SQL bieten alternative SQL-ähnliche Schnittstellen zu auf HDFS gespeicherten Daten
  • Spark Streaming erleichtert die Arbeit mit kontinuierlichen Datenströmen (z. B. Twitter-Feed).
  • MLlib implementiert eine Reihe von Algorithmen für maschinelles Lernen mit einer ziemlich einfachen und flexiblen API
  • GraphX ermöglicht die groß angelegte Grafikverarbeitung

Es gibt also ziemlich viele datenwissenschaftliche Probleme, die Sie mit Hadoop und verwandten Projekten lösen können.

Freund
quelle
Ich bin mir nicht so sicher, was Sie auf MapReduce sagen, insbesondere 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.
Merours
@fxm: Das MapReduce-Framework kann für ziemlich unterschiedliche Aufgaben verwendet werden. Zum Beispiel hat Oozie - Workflow-Scheduler für verschiedene Hadoop-Komponenten - eine sogenannte Java-Aktion, die einfach einen Mapper erstellt und darin benutzerdefinierten Java-Code ausführt. Mit diesem Ansatz können Sie im Wesentlichen jeden Code ausführen. Dies bietet Ihnen jedoch keine MR-Vorteile gegenüber einer einfachen Java-App. Die einzige Möglichkeit, diese Vorteile zu erzielen, besteht darin, Berechnungen parallel (mithilfe von Map) auf Knoten mit Daten auszuführen, dh lokal. Zusammenfassend: Sie können jeden Code mit MR ausführen, aber um Leistung zu erzielen, müssen Sie die Datenlokalität beibehalten.
Freund
Ich stimme zu, aber ich meinte, ein Entwickler sollte sich nicht um die Verwaltung der Datenlokalität (die von hadoop verwaltet wird) kümmern, sondern darum, die gewünschten Algorithmen mit dem MapReduce-Muster auszudrücken.
Merours
@fxm: Entwickler stellt die Lokalität mithilfe von Mapper sicher. Grob gesagt bedeutet "map (f, data)" "f () auf Datenknoten übertragen und lokal ausführen". Wenn der Entwickler die Lokalität nicht berücksichtigt (z. B. alle Berechnungen reduziert), verliert er alle Vorteile von MR. Das Ausdrücken von algo als (effizienter) MR-Job impliziert daher ohnehin die Nutzung der Datenlokalität. Trotzdem würde ich immer noch vorschlagen, flexiblere Tools als reine MR wie Spark zu verwenden.
Freund
9

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.

Was sind die verschiedenen Klassen von Data Science-Problemen ...

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
4

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:

  1. Single-Pass-Algorithmen
  2. Iterative Algorithmen
  3. Abfragebasierte Algorithmen

Sie geben auch Beispiele für jede Klasse.

AceRymond
quelle
2

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.

Emre
quelle