Suchen

Definition Was ist MapReduce?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Bei MapReduce handelt es sich um ein von Google entwickeltes Verfahren, mit dem sich große strukturierte oder unstrukturierte Datenmengen mit hoher Geschwindigkeit verarbeiten lassen. MapReduce nutzt die Parallelisierung von Aufgaben und deren Verteilung auf mehrere Systeme.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Ursprüngliche wurde das MapReduce-Verfahren 2004 von Google für die Indexierung von Webseiten entwickelt. MapReduce ist patentiert und kann als Framework für Datenbanken verwendet werden. Das Framework eignet sich sehr gut für die Verarbeitung von großen Datenmengen (bis zu mehreren Petabytes), wie sie im Big-Data-Umfeld auftreten.

Die Daten können sowohl strukturiert als auch unstrukturiert sein. Da bei großen Datenmengen einzelne Prozesse oder Rechner schnell an ihre Grenzen stoßen, parallelisiert MapReduce die Bearbeitung durch die Verteilung auf mehrere gleichzeitig auszuführende Tasks. Das MapReduce-Framework sorgt für die Verteilung der Aufgaben auf unterschiedliche Rechner oder Cluster und aggregiert anschließend die Ergebnisse. Das Verfahren arbeitet fehlertolerant und kann Aufgaben bei Problemen mit einzelnen Rechnern neu verteilen. Programmierer, die MapReduce anwenden, müssen sich nicht um die Fehlerbehandlung, die Aufgabenüberwachung oder die Cluster-Kommunikation kümmern.

MapReduce wird häufig im Big-Data-Umfeld für beispielsweise Finanzanalysen, wissenschaftliche Simulationen oder das Data Mining verwendet. Es existiert eine ganze Reihe von Implementierungen des MapReduce-Verfahrens in Programmiersprachen wie Java, C++, Perl, Python oder Ruby.

Die beiden Grundfunktionen Map und 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.

Map stellt die Funktion dar, die die Aufgaben an die unterschiedlichen Knoten eines Clusters verteilt. Die Reduce-Funktion sortiert die berechneten Ergebnisse und fügt sie wieder zusammen.

Beispiele für MapReduce im Big-Data-Umfeld

MapReduce ist weit verbreitet und kommt immer dann zum Einsatz, wenn große Datenmengen möglichst schnell zu verarbeiten sind. Es existiert eine Vielzahl von Beispielen für die Verwendung von MapReduce. Google nutzte das Verfahren sehr lange für die Indexierung der Webseiten bei der Google-Suche, ist aber inzwischen auf noch leistungsfähigere Algorithmen umgestiegen. Auch im Google-News-Umfeld kam MapReduce zum Einsatz. Ein weiterer Suchmaschinenanbieter der MapReduce für den Index-Aufbau nutzt ist Yahoo. Viele E-Mail-Provider setzen MapReduce bei der Spam-Erkennung von E-Mails ein.

Ebenfalls Anwender von MapReduce ist Facebook. Bereiche in denen Facebook das Verfahren nutzt, sind zum Beispiel das Data Mining, die Optimierung von Ads oder die Spam-Erkennung. Amazon verwendet MapReduce-Verfahren unter anderem für das Clustering von Produkten.

Die Vor- und Nachteile von MapReduce

Gegenüber den klassischen Verfahren der Datenverarbeitung, wie sie in relationalen Datenbanken zum Einsatz kommen, bietet MapReduce eine ganze Reihe an Vorteilen. MapReduce lässt sich auf normalen Rechnern mit handelsüblicher Software ausführen und benötigt keine Highend-Server. Ein Cluster-Verbund für die parallele Datenverarbeitung kann bei Bedarf ohne spezielle Server realisiert werden. Dadurch ist MapReduce kostengünstig nutzbar. Gleichzeitig skaliert das Verfahren sehr gut, da sich die Aufgaben auf beliebig viele Knoten verteilen lassen.

Durch die parallelisierte Verarbeitung ist MapReduce sehr schnell und wesentlich performanter als die Datenverarbeitung in relationalen Datenbanken. Ein Nachteil kann durch die Vernetzung der einzelnen Knoten entstehen. Unter Umständen stellt das Netzwerk und seine Übertragungskapazität einen Flaschenhals für das komplette System dar.

Kurze Gegenüberstellung von MapReduce und relational arbeitenden Datenbanksystemen

Lange Zeit dominierten relationale Datenbanksysteme das Speichern und Verarbeiten von Daten. Sie sind geeignet für gezielte Abfragen und Veränderungen eines strukturierten und normalisierten Datenbestands. Ihre Skalierung ist nichtlinear und die Antwortzeiten für Abfragen steigen überproportional mit der Größe der Datenbank. Das MapReduce-Konzept verarbeitet Daten parallel als Streams und besitzt eine lineare Skalierung. Es eignet sich sehr gut für die Batch-Verarbeitung von großen unstrukturierten, semi-strukturierten und nicht-normalisierten Daten.

Hadoop als Implementierung des MapReduce-Konzepts

Für das MapReduce-Konzept existieren viele Implementierungen. Eine der erfolgreichsten und am weitesten verbreitete Implementierung ist Hadoop. Es handelt sich bei Hadoop um ein Software-Framework, das auf Java basiert und für die Bewältigung der Datenverarbeitung im Big-Data-Umfeld eingesetzt wird. Hadoop ist ein Top-Level-Projekt der Apache Software Foundation und der Quellcode ist frei verfügbar. Das Software-Framework ist für skalierbare, verteilt arbeitende Systeme vorgesehen und auf unterschiedlicher Hardware betreibbar.

Wesentliche Bestandteile von Hadoop sind neben dem MapReduce-Verfahren das Hadoop Distributed File System (HDFS) und der Yet Another Resource Negotiator (YARN). Bei HDFS handelt es sich um ein verteiltes Dateisystem für das Speichern von Daten in einem Rechnerverbund. Eine Ergänzung zum MapReduce-Verfahren bildet YARN. YARN kann die Ressourcen eines Rechnerverbunds managen und sie dynamisch den verschiedenen Jobs zuordnen. Die Kapazitäten der Systeme werden von YARN über Queues festgelegt.

(ID:44787600)

Über den Autor