MapReduce ist ein Programmiermodell, das Parallelverarbeitung nutzt, um die Datenverarbeitung zu beschleunigen. MapReduce ermöglicht massive Skalierbarkeit über Hunderte oder Tausende von Servern innerhalb eines Hadoop-Clusters.
Der Name „MapReduce“ bezieht sich auf die beiden Aufgaben, die das Modell ausführt, um eine große Datenverarbeitung in viele kleinere Aufgaben zu „teilen“, die parallel schneller ausgeführt werden können.
Das Programmiermodell ist eine der Kern-Komponenten von Apache Hadoop, einem Open-Source-Framework, das von der Apache Software Foundation unterstützt wird und auf der Programmiersprache Java basiert.
Das MapReduce-Modell kann auch außerhalb von Hadoop verwendet werden.
MapReduce hilft dabei, Datenverarbeitung in kleinere Teile zu unterteilen, damit sie schneller stattfinden kann.
Die Analyse einer riesigen Datei mit Terabytes oder Petabytes an Daten mit einem Prozessor kann beispielsweise 10 Stunden dauern. MapReduce kann dieselbe Datendatei in 10 Aufgaben aufteilen, die parallel auf 10 Prozessoren ausgeführt werden. Die Ausführung dieser Aufgabe dauert möglicherweise nur eine Stunde oder weniger. Die Daten können von den verteilten Rechenknoten aggregiert werden, um ein Ergebnis zu erzielen.
Während Mapping und Reduzieren die wesentlichen Funktionen des MapReduce-Modells sind, umfasst der Gesamtprozess noch einige weitere Schritte.
Eine MapReduce-Anwendung akzeptiert Eingabedaten, die strukturierte oder unstrukturierte Daten enthalten können. MapReduce-Anwendungen arbeiten in der Regel mit Eingabe-Dateien, die im Hadoop Distributed File System (HDFS) gespeichert sind, aber das Modell kann auch mit anderen Datenquellen arbeiten. (Weitere Informationen finden Sie unter „MapReduce innerhalb des Hadoop-Ökosystems“.)
Für einen bestimmten Job hilft das MapReduce-Framework dabei, verteilte Server auszuwählen, Kommunikation und Datenübertragungen zu verwalten und Fehlertoleranz und Redundanz zu unterstützen.
Die Eingabedaten sind in kleinere Blöcke aufgeteilt. Diese Blöcke werden an Mapper verteilt – d. h. Funktionen, die die Zuordnung durchführen –, die sich auf verschiedenen Rechenknoten befinden. Um einen effizienten Lastenausgleich zu erreichen, versucht das MapReduce-Framework die Zuweisung von Daten an die Mapper möglichst gleichmäßig zu gestalten.
Auf jedem Knoten verarbeitet die Map-Funktion die empfangenen Daten und wandelt sie in Schlüssel/Werte-Paare um.
Die Gesamtzahl der Mapper wird innerhalb des Hadoop-Frameworks basierend auf dem Gesamtvolumen der Daten und den verfügbaren Speicherblöcken auf jedem Mapper bestimmt. Parameter für die Mapper, Reducer und Ausgabeformate können innerhalb des Hadoop-Clusters festgelegt werden.
Das Hadoop- Framework sortiert die Map-Ausgaben und weist alle Schlüssel/Werte-Paare mit demselben „Schlüssel“ (Thema) demselben Reducer zu. In einem Datensatz mit Städten und ihren täglich hohen Temperaturen würden beispielsweise alle Daten mit dem Schlüssel „Tokio“ an denselben Reducer gehen.
Der Reducer ist, wie der Name schon sagt, die Funktion, die den Schritt des Reduzierens ausführt.
Reduce-Funktionen verarbeiten die Schlüssel/Werte-Paare, die die Mapper ausgeben. Dies kann, abhängig von der Art der erforderlichen Verarbeitung, das Zusammenführen, Tabellieren oder Ausführen anderer Operationen mit den Daten beinhalten.
Mapping und Reduzierung können auf denselben Servern durchgeführt werden, dies ist jedoch optional.
Jeder Reducer gibt die Ergebnisse seiner Verarbeitung an das HDFS oder einen anderen Datenspeicher aus.
Unabhängig von der Datenmenge, die ein Unternehmen analysieren möchte, bleiben die wichtigsten Prinzipien dieselben.
Für dieses Beispiel umfasst der Datensatz Städte (die Schlüssel) und die entsprechenden Tagestemperaturen (die Werte), die für jede Stadt aufgezeichnet wurden. Ein Beispiel für ein Schlüssel/Werte-Paar könnte folgendermaßen aussehen: <Toronto, 18>.
Die Daten werden auf mehrere Dateien verteilt. Jede Datei kann Daten aus einer Mischung von Städten enthalten und sie kann dieselbe Stadt mehrmals enthalten.
Anhand dieses Datensatzes möchte der Nutzer die „Höchsttemperatur“ für jede Stadt im erfassten Zeitraum ermitteln.
Eine Implementierung von MapReduce zur Erledigung dieser Aufgabe könnte so aussehen:
Das Hadoop-Ökosystem ist eine Suite von Open-Source-Modulen, die zusammenarbeiten, um die Effizienz zu fördern. Es gibt Module, die das Haupt-Hadoop-Framework bilden, darunter MapReduce und drei weitere:
HDFS ist ein verteiltes Dateisystem zum Speichern von Anwendungsdaten auf bis zu Tausenden von Standardservern.
HDFS wurde entwickelt, um Fehlertoleranz für Hadoop zu bieten und einen schnellen Zugriff auf Daten zu ermöglichen. Standardmäßig werden Datenblöcke beim Laden oder Schreiben über mehrere Knoten repliziert.
Die HDFS-Architektur verfügt über einen NameNode zur Verwaltung des Dateisystem-Namespace und Dateizugriffs, sowie über mehrere DataNodes zur Verwaltung des Datenspeichers.
Das Open-Source-Projekt Apache Hadoop (YARN) ist ein Framework für die Jobplanung und die Verwaltung von Clusterressourcen. Es unterstützt multiple Workloads, wie SQL Querys, erweiterte Modellierung und Echtzeit-Streaming.
Dieses Modul ist eine Sammlung von Ressourcendienstprogrammen und Bibliotheken, die andere Hadoop-Module unterstützen. Es ist auch unter dem Namen Hadoop Core bekannt und umfasst mehrere Ressourcen für die automatische Fehlerbehebung, Abstraktion auf Dateisystem- und Betriebssystemebene, Java Archive (JAR)-Dateien und -Skripte und mehr.
Zusätzlich zum Haupt-Hadoop-Framework umfasst das Hadoop-Ökosystem Folgendes:
Die MapReduce-Programmierung bietet mehrere Vorteile, die Unternehmen dabei helfen können, wertvolle Erkenntnisse aus Big-Data-Analysen zu gewinnen, z. B.:
MapReduce kann viele einfache Anwendungsfälle effizient bewältigen, obwohl komplexe Datenverarbeitung in anderen Anwendungen schneller ausgeführt werden können. Hier sind einige Anwendungen, die für den Ansatz der parallelen Verarbeitung von MapReduce geeignet sind:
Das MapReduce-Programmierparadigma wurde 2004 von den Google-Informatikern Jeffery Dean und Sanjay Ghemawat entwickelt. Das Ziel des MapReduce-Modells besteht darin, die Transformation und Analyse großer Datenmengen durch massive Parallelverarbeitung auf großen Clustern handelsüblicher Hardware zu vereinfachen. Außerdem können sich Programmierer auf Algorithmen anstatt auf die Datenverwaltung konzentrieren.
Google hat das erste MapReduce-Framework eingeführt, Apache Hadoop MapReduce ist jedoch wahrscheinlich das beliebteste.
MapReduce hat eine wichtige Rolle bei der Weiterentwicklung von Big-Data-Analysen gespielt, hat aber auch seine Nachteile. So werden beispielsweise Daten von MapReduce in der Regel nicht im Speicher aufbewahrt, und iterative Logik ist nur durch die Verkettung von MapReduce-Anwendungen möglich. Diese Faktoren erhöhen die Komplexität und können zu längeren Verarbeitungszeiten führen.
Während MapReduce nach wie vor weit verbreitet ist – insbesondere in Altlast-Systemen – wechseln viele Unternehmen für Big Data-Anwendungen zu schnelleren oder spezialisierteren Frameworks wie Apache Spark.
Entwerfen Sie eine Datenstrategie, die Datensilos beseitigt, die Komplexität reduziert und die Datenqualität verbessert, um außergewöhnliche Kunden- und Mitarbeitererfahrungen zu schaffen.
Watsonx.data ermöglicht es Ihnen, Analysen und KI mit all Ihren Daten zu skalieren, unabhängig davon, wo sie sich befinden, und zwar über einen offenen, hybriden und kontrollierten Datenspeicher.
Erschließen Sie den Wert von Unternehmensdaten mit IBM Consulting und bauen Sie ein erkenntnisgesteuertes Unternehmen auf, das Ihnen geschäftliche Vorteile verschafft.