Definition

MapReduce

MapReduce ist eine Kernkomponente des Software-Frameworks Apache Hadoop. MapReduce wurde ursprünglich von Google entwickelt, um Websites zu indexieren.

Apache Hadoop ermöglicht die verteilte Verarbeitung von massiven unstrukturierten Datensätzen über Computer-Cluster mit Standardhardware, wobei jeder Knoten innerhalb des Clusters eigenen Speicherplatz integriert.

MapReduce erfüllt zwei wesentliche Funktionen: Es filtert und verteilt die Arbeit auf verschiedene Knoten innerhalb des Clusters. Diese Funktion wird als Map (oder Mapper) bezeichnet wird. Das Framwork organisiert und reduziert die Ergebnisse jedes Knotens zu einer zusammenhängenden Antwort auf eine Anfrage, was als Reduce (oder Reducer) bezeichnet wird.

Wie MapReduce funktioniert

Die ursprüngliche Version von MapReduce umfasste mehrere Komponenten-Daemons (Dämonen), darunter:

  • JobTracker: der Master-Knoten, der alle Jobs und Ressourcen in einem Cluster verwaltet;
  • TaskTrackers: Agenten, die auf jedem Rechner im Cluster eingesetzt werden, um den Mapper auszuführen und Aufgaben zu reduzieren; und
  • JobHistory Server: eine Komponente, die abgeschlossene Aufträge verfolgt und typischerweise als separate Funktion oder mit JobTracker eingesetzt wird.

Mit der Einführung Hadoop 2 wurden die früheren JobTracker- und TaskTracker-Daemons durch Komponenten von Yet Another Resource Negotiator (YARN) – ResourceManager und NodeManager – ersetzt.

Der ResourceManager läuft auf einem Master-Knoten und übernimmt die Übermittlung und Planung von Jobs auf dem Cluster. Er überwacht außerdem die Jobs und weist Ressourcen zu.

Der NodeManager läuft auf Slave-Knoten und arbeitet mit dem ResourceManager zusammen, um Aufgaben auszuführen und die Ressourcennutzung zu tracken. Der NodeManager kann andere Daemons zur Unterstützung der Aufgabenausführung auf dem Slave-Knoten einsetzen.

Um Eingabedaten zu verteilen und Ergebnisse zu sammeln, arbeitet MapReduce parallel über große Cluster hinweg. Da sich die Cluster-Größe nicht auf die Endergebnisse eines Verarbeitungsauftrags auswirkt, können Aufträge auf fast beliebig viele Server verteilt werden. Daher vereinfachen MapReduce und das Hadoop-Framework die Softwareentwicklung.

MapReduce ist in mehreren Sprachen verfügbar, darunter C, C++, Java, Ruby, Perl und Python. Programmierer können MapReduce-Bibliotheken verwenden, um Aufgaben zu erstellen, ohne sich mit der Kommunikation oder Koordination zwischen den Knoten befassen zu müssen.

MapReduce ist außerdem fehlertolerant, wobei jeder Knoten seinen Status regelmäßig an einen Master-Knoten meldet. Wenn ein Knoten nicht wie erwartet antwortet, weist der Master-Knoten diesen Teil des Auftrags anderen verfügbaren Knoten im Cluster zu. Dadurch wird eine hohe Ausfallsicherheit geschaffen.

MapReduce-Anwendungen

Die Stärke von MapReduce liegt in der Fähigkeit, riesige Datensätze durch die Verteilung der Verarbeitung auf viele Knoten und die anschließende Kombination oder Reduzierung der Ergebnisse dieser Knoten zu bewältigen.

MapReduce wird in der Praxis in einer Vielzahl von Fällen eingesetzt, in denen komplexe und scheinbar nicht zusammenhängende Datensätze verwendet werden. Eine Social-Networking-Webseite kann MapReduce zum Beispiel verwenden, um potenzielle Freunde, Kollegen und andere Kontakte der Benutzer auf der Grundlage von Site-Aktivität, Namen, Standorten, Arbeitgebern und vielen anderen Datenelementen zu ermitteln.

Eine Reisebuchungsseite kann MapReduce verwenden, um die Suchkriterien und das historische Verhalten der Benutzer zu untersuchen, woraus maßgeschneiderte Angebote für jeden einzelnen Nutzer erstellt werden. Eine Industrieanlage kann Gerätedaten von verschiedenen Sensoren in der gesamten Anlage sammeln und MapReduce verwenden, um Wartungspläne anzupassen oder Ausfälle von Geräten vorherzusagen, um die Gesamtbetriebszeit zu verbessern und Kosten zu sparen.

MapReduce-Services und Alternativen

Eine Herausforderung bei MapReduce ist die Infrastruktur, die für den Betrieb erforderlich ist. Viele Unternehmen, die von Big-Data-Verarbeitung profitieren könnten, bringen in der Regel das für eine solche Infrastruktur erforderliche Kapital und die Gemeinkosten nicht auf. Folglich verlassen sich einige Organisationen auf Public-Cloud-Dienste für Hadoop und MapReduce, die eine enorme Skalierbarkeit bei minimalen Kosten oder Wartungsaufwand bereithalten.

Zum Beispiel bietet Amazon Web Services (AWS) Hadoop über Amazon Elastic MapReduce (EMR) an. Microsoft Azure bietet den Service HDInsight an, der es Anwendern ermöglicht, Apache Hadoop, Apache Spark und andere Cluster für Datenverarbeitungsaufgaben bereitzustellen. Google Cloud Platform stellt den Service Cloud Dataproc zur Verfügung, um Spark und Hadoop-Cluster zu betreiben.

Für Organisationen, die es vorziehen, eine eigene On-Premises Big-Data-Infrastrukturen aufzubauen, stellen Hadoop und MapReduce nur eine Option dar. Unternehmen können sich für den Einsatz anderer Plattformen wie Apache Spark, High-Performance Computing Cluster und Hydra entscheiden.

Welches Big-Data-Framework ein Unternehmen auswählt, hängt von der Art der erforderlichen Verarbeitungsaufgaben, den unterstützten Programmiersprachen sowie den Anforderungen an Leistung und Infrastruktur ab.

Diese Definition wurde zuletzt im März 2020 aktualisiert

Erfahren Sie mehr über Softwareentwicklung