Apache MapReduce
Ein Programmierkonzept, das eine massive Skalierbarkeit unstrukturierter Daten über Hunderte oder Tausende von Standardservern in einem Apache-Hadoop-Cluster ermöglicht
Die IBM + Cloudera Partnerschaft
Orange and blue technology background circuit board and code. 3d Illustration
Was ist MapReduce?

MapReduce ist ein Programmierkonzept, das massive Skalierbarkeit über Hunderte oder Tausende von Servern in einem Hadoop-Cluster ermöglicht. Als Verarbeitungskomponente ist MapReduce das Herzstück von Apache Hadoop. Der Begriff "MapReduce" bezieht sich auf zwei separate und unterschiedliche Aufgaben, die Hadoop-Programme ausführen. Der erste ist der Map-Auftrag, bei dem ein Datensatz in einen anderen Datensatz umgewandelt wird, wobei die einzelnen Elemente in Tupel (Schlüssel/Wert-Paare) zerlegt werden.

Der Reduce-Job nimmt die Ausgabe einer Map als Eingabe und kombiniert diese Datentupel zu einer kleineren Menge von Tupeln. Wie die Reihenfolge des Namens MapReduce andeutet, wird der Reduce-Job immer nach dem Map-Job ausgeführt.

Die MapReduce-Programmierung bietet mehrere Vorteile, mit denen Sie wertvolle Erkenntnisse aus Ihren Big Data gewinnen können:

  • Skalierbarkeit. Unternehmen können Petabytes an Daten verarbeiten, die im Hadoop Distributed File System (HDFS) gespeichert sind.
  • Flexibilität. Hadoop ermöglicht einen einfacheren Zugriff auf mehrere Datenquellen und mehrere Datentypen.
  • Schnelligkeit. Mit paralleler Verarbeitung und minimaler Datenbewegung ermöglicht Hadoop die schnelle Verarbeitung riesiger Datenmengen.
  • Einfach. Die Entwickler können Code in einer Reihe von Sprachen schreiben, darunter Java, C++ und Python.
Ein Beispiel für MapReduce

Dies ist ein ganz einfaches Beispiel für MapReduce. Unabhängig von der Datenmenge, die Sie analysieren müssen, bleiben die wichtigsten Grundsätze dieselben.

Angenommen, Sie haben fünf Dateien, und jede Datei enthält zwei Spalten (einen Schlüssel und einen Wert in Hadoop-Begriffen), die eine Stadt und die entsprechende Temperatur darstellen, die in dieser Stadt für die verschiedenen Messtage aufgezeichnet wurde. Die Stadt ist der Schlüssel, und die Temperatur ist der Wert. Zum Beispiel: (Toronto, 20). Aus allen gesammelten Daten möchten Sie die Höchsttemperatur für jede Stadt in allen Dateien ermitteln (beachten Sie, dass in jeder Datei dieselbe Stadt mehrfach vertreten sein kann).

Mithilfe des MapReduce-Frameworks können Sie dies in fünf Map-Tasks aufteilen, wobei jeder Mapper an einer der fünf Dateien arbeitet. Der Mapper-Task geht die Daten durch und liefert die Höchsttemperatur für jede Stadt.

Die Ergebnisse eines Mapper-Tasks für die oben genannten Daten würden zum Beispiel so aussehen: (Toronto, 20) (Whitby, 25) (New York, 22) (Rom, 33)

Nehmen wir an, dass die anderen vier Mapper-Tasks (die an den anderen vier hier nicht gezeigten Dateien arbeiten) die folgenden Zwischenergebnisse liefern:

(Toronto, 18) (Whitby, 27) (New York, 32) (Rom, 37) (Toronto, 32) (Whitby, 20) (New York, 33) (Rom, 38) (Toronto, 22) (Whitby, 19) (New York, 20) (Rom, 31) (Toronto, 31) (Whitby, 22) (New York, 19) (Rom, 30)

Alle fünf dieser Ausgabeströme würden in die Reduce-Tasks eingespeist, die die Eingabeergebnisse kombinieren und einen einzigen Wert für jede Stadt ausgeben, was eine endgültige Ergebnismenge wie folgt ergibt: (Toronto, 32) (Whitby, 27) (New York, 33) (Rom, 38).

Als Analogie kann man sich die Map- und Reduce-Tasks so vorstellen, wie zu Zeiten der Römer eine Volkszählung durchgeführt wurde, bei der das Volkszählungsbüro seine Leute in jede Stadt des Reiches schickte. Jeder Volkszähler in jeder Stadt hätte die Aufgabe, die Anzahl der Menschen in der jeweiligen Stadt zu zählen und die Ergebnisse dann an die Hauptstadt zu übermitteln. Dort würden die Ergebnisse aus jeder Stadt zu einer einzigen Zählung (Summe aller Städte) reduziert, um die Gesamtbevölkerung des Reiches zu ermitteln. Diese parallele Zuordnung von Menschen zu Städten und die anschließende Kombination der Ergebnisse (Reducing) ist wesentlich effizienter als die serielle Zählung aller Menschen im Reich durch eine einzige Person.

Relevante Lösungen
Treiben Sie bessere und schnellere Analyse mit Big Data Lösungen von IBM und Cloudera an.

IBM und Cloudera haben sich zusammengeschlossen, um eine branchenführende, unternehmensgerechte Hadoop-Distribution anzubieten, einschließlich eines integrierten Ökosystems von Produkten und Dienstleistungen zur Unterstützung schnellerer Analysen im großen Maßstab.

Entdecken Sie Möglichkeiten von Big Data mit IBM
Apache Hadoop

Nutzen Sie die Möglichkeiten von Big Data mithilfe einer hoch skalierbaren Open-Source-Speicher- und Programmierplattform. IBM bietet Hadoop-kompatible Lösungen und Services, mit denen Sie alle Arten von Daten nutzen können, um Erkenntnisse und bessere datengestützte Entscheidungen für Ihr Unternehmen zu gewinnen.

Erfahren Sie mehr über Hadoop-Lösungen
Data-Lakes

Bauen Sie einen Hadoop-basierten Data Lake auf, der das Potenzial Ihrer Hadoop-Daten optimiert. Mit den Lösungen und Produkten von IBM und Cloudera können Sie das wachsende Volumen, die Geschwindigkeit und die Vielfalt von Daten besser verwalten, steuern, darauf zugreifen und erforschen.

Mehr zu Data Lakes
Ressourcen Verbinden Sie mehr Daten aus mehr Quellen

Data-Lakes gewinnen an Bedeutung, da Unternehmen immer mehr unstrukturierte Daten einbinden und versuchen, Erkenntnisse aus echtzeitorientierten Ad-hoc-Abfragen und -Analysen zu ziehen. Erfahren Sie mehr über die neuen Datentypen und Datenquellen, die durch Integration von Data-Lakes in Ihr bestehendes Datenmanagement genutzt werden können. (PDF, 84 KB)

Ein robuster, kontrollierter Data Lake für KI

Erfahren Sie, welche Speicher- und Governance-Technologien für Ihren Data Lake erforderlich sind, um KI-fähige Daten bereitzustellen. (PDF, 15.6 MB)

Kontakt
Hadoop-Community Hadoop erkunden Blogs