Was ist MapReduce in Hadoop?
MapReduce ist ein Software-Framework und Programmiermodell, das zur Verarbeitung großer Datenmengen verwendet wird. Das MapReduce- Programm arbeitet in zwei Phasen, nämlich Map und Reduce. Zuordnungsaufgaben befassen sich mit dem Aufteilen und Zuordnen von Daten, während das Mischen von Aufgaben gemischt und die Daten reduziert werden.
Hadoop kann MapReduce-Programme ausführen, die in verschiedenen Sprachen geschrieben sind: Java, Ruby, Python und C ++. Die Programme von Map Reduce im Cloud Computing sind paralleler Natur und daher sehr nützlich für die Durchführung umfangreicher Datenanalysen mit mehreren Computern im Cluster.
Die Eingabe für jede Phase sind Schlüssel-Wert- Paare. Darüber hinaus muss jeder Programmierer zwei Funktionen angeben: Zuordnungsfunktion und Reduzierungsfunktion .
In diesem Hadoop MapReduce-Tutorial für Anfänger lernen Sie:
- Was ist MapReduce in Hadoop?
- MapReduce-Architektur in Big Data wird ausführlich erläutert
- MapReduce-Architektur ausführlich erklärt
- Wie organisiert MapReduce die Arbeit?
MapReduce-Architektur in Big Data wird ausführlich erläutert
Der gesamte Prozess durchläuft vier Ausführungsphasen: Aufteilen, Zuordnen, Mischen und Reduzieren.
Lassen Sie uns nun in diesem MapReduce-Tutorial anhand eines MapReduce-Beispiels verstehen:
Angenommen, Sie haben folgende Eingabedaten für Ihr MapReduce in Big Data-Programm
Welcome to Hadoop ClassHadoop is goodHadoop is bad
Die endgültige Ausgabe der MapReduce-Aufgabe lautet
Schlecht | 1 |
Klasse | 1 |
gut | 1 |
Hadoop | 3 |
ist | 2 |
zu | 1 |
Herzlich willkommen | 1 |
Die Daten durchlaufen die folgenden Phasen von MapReduce in Big Data
Eingabesplits:
Eine Eingabe in einen MapReduce in Big Data-Job ist in Teile mit fester Größe unterteilt, die als Eingabesplits bezeichnet werden. Die Eingabesplit ist ein Teil der Eingabe, die von einer einzelnen Map verbraucht wird
Kartierung
Dies ist die allererste Phase bei der Ausführung des Programms zur Kartenreduzierung. In dieser Phase werden Daten in jedem Split an eine Zuordnungsfunktion übergeben, um Ausgabewerte zu erzeugen. In unserem Beispiel besteht eine Aufgabe der Zuordnungsphase darin, eine Anzahl von Vorkommen jedes Wortes aus Eingabesplits zu zählen (weitere Details zum Input-Split finden Sie unten) und eine Liste in Form von
Mischen
Diese Phase verbraucht die Ausgabe der Zuordnungsphase. Seine Aufgabe ist es, die relevanten Datensätze aus der Ausgabe der Mapping-Phase zu konsolidieren. In unserem Beispiel werden dieselben Wörter zusammen mit ihrer jeweiligen Häufigkeit zusammengefasst.
Reduzieren
In dieser Phase werden die Ausgabewerte aus der Mischphase aggregiert. Diese Phase kombiniert Werte aus der Mischphase und gibt einen einzelnen Ausgabewert zurück. Kurz gesagt, diese Phase fasst den gesamten Datensatz zusammen.
In unserem Beispiel aggregiert diese Phase die Werte aus der Mischphase, dh berechnet die Gesamtvorkommen jedes Wortes.
MapReduce-Architektur ausführlich erklärt
- Für jeden Split wird eine Map-Aufgabe erstellt, die dann die Map-Funktion für jeden Datensatz im Split ausführt.
- Es ist immer vorteilhaft, mehrere Teilungen zu haben, da die Zeit, die für die Verarbeitung einer Teilung benötigt wird, im Vergleich zu der Zeit, die für die Verarbeitung der gesamten Eingabe benötigt wird, gering ist. Wenn die Teilungen kleiner sind, ist es besser, die Verarbeitung lastausgeglichen zu gestalten, da wir die Teilungen parallel verarbeiten.
- Es ist jedoch auch nicht wünschenswert, zu kleine Teilungen zu haben. Wenn die Teilungen zu klein sind, beginnt die Überlastung beim Verwalten der Teilungen und beim Erstellen von Zuordnungsaufgaben die gesamte Ausführungszeit des Jobs zu dominieren.
- Für die meisten Jobs ist es besser, eine Teilungsgröße festzulegen, die der Größe eines HDFS-Blocks entspricht (standardmäßig 64 MB).
- Die Ausführung von Kartenaufgaben führt dazu, dass die Ausgabe auf eine lokale Festplatte auf dem jeweiligen Knoten und nicht auf HDFS geschrieben wird.
- Der Grund für die Auswahl der lokalen Festplatte gegenüber HDFS besteht darin, eine Replikation zu vermeiden, die im Falle eines HDFS-Speicherbetriebs stattfindet.
- Die Kartenausgabe ist eine Zwischenausgabe, die durch Reduzieren von Aufgaben verarbeitet wird, um die endgültige Ausgabe zu erzeugen.
- Sobald der Auftrag abgeschlossen ist, kann die Kartenausgabe weggeworfen werden. Das Speichern in HDFS mit Replikation wird also zu einem Overkill.
- Im Falle eines Knotenausfalls führt Hadoop die Kartenaufgabe auf einem anderen Knoten erneut aus, bevor die Kartenausgabe von der Reduzierungsaufgabe verwendet wird, und erstellt die Kartenausgabe neu.
- Aufgabe reduzieren funktioniert nicht mit dem Konzept der Datenlokalität. Eine Ausgabe jeder Kartenaufgabe wird der Reduzierungsaufgabe zugeführt. Die Kartenausgabe wird an den Computer übertragen, auf dem die Reduzierungsaufgabe ausgeführt wird.
- Auf diesem Computer wird die Ausgabe zusammengeführt und dann an die benutzerdefinierte Reduzierungsfunktion übergeben.
- Im Gegensatz zur Kartenausgabe wird die reduzierte Ausgabe in HDFS gespeichert (das erste Replikat wird auf dem lokalen Knoten und andere Replikate auf Off-Rack-Knoten gespeichert). Schreiben Sie also die Reduzierungsausgabe
Wie organisiert MapReduce die Arbeit?
In diesem MapReduce-Tutorial erfahren Sie, wie MapReduce funktioniert
Hadoop unterteilt den Job in Aufgaben. Es gibt zwei Arten von Aufgaben:
- Kartenaufgaben (Splits & Mapping)
- Aufgaben reduzieren (Mischen, Reduzieren)
wie oben erwähnt.
Der gesamte Ausführungsprozess (Ausführung von Map- und Reduce-Aufgaben, beide) wird von zwei Arten von Entitäten gesteuert, die als a bezeichnet werden
- Jobtracker : Verhält sich wie ein Master (verantwortlich für die vollständige Ausführung des übergebenen Jobs)
- Multiple Task Tracker : Verhält sich wie Slaves, von denen jeder den Job ausführt
Für jeden Job, der zur Ausführung im System übergeben wird, gibt es einen Jobtracker , der sich auf Namenode befindet, und es gibt mehrere Tasktracker, die sich auf Datanode befinden .

- Ein Job ist in mehrere Aufgaben unterteilt, die dann auf mehreren Datenknoten in einem Cluster ausgeführt werden.
- Es liegt in der Verantwortung des Job Trackers, die Aktivität zu koordinieren, indem Aufgaben so geplant werden, dass sie auf verschiedenen Datenknoten ausgeführt werden.
- Die Ausführung der einzelnen Aufgabe erfolgt dann durch den Task-Tracker, der sich auf jedem Datenknoten befindet, der einen Teil des Jobs ausführt.
- Der Task Tracker ist dafür verantwortlich, den Fortschrittsbericht an den Job Tracker zu senden.
- Darüber hinaus sendet der Task-Tracker regelmäßig ein "Heartbeat" -Signal an den Jobtracker, um ihn über den aktuellen Status des Systems zu informieren.
- Somit verfolgt der Job-Tracker den Gesamtfortschritt jedes Jobs. Im Falle eines Aufgabenfehlers kann der Job-Tracker ihn auf einem anderen Task-Tracker neu planen.