Was ist MapReduce in Hadoop? Architektur | Beispiel

Was ist MapReduce in Hadoop?

Karte verkleinern ist ein Software-Framework und Programmiermodell zur Verarbeitung großer Datenmengen. Karte verkleinern Programmarbeit in zwei Phasen, nämlich Map und Reduce. Map-Aufgaben befassen sich mit der Aufteilung und Zuordnung von Daten, während Reduce-Aufgaben die Daten mischen und reduzieren.

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 von Natur aus parallel und daher sehr nützlich für die Durchführung umfangreicher Datenanalysen mit mehreren Maschinen im Cluster.

Der Eingang zu jeder Phase ist Schlüsselwert Paare. Außerdem muss jeder Programmierer zwei Funktionen angeben: Kartenfunktion und Funktion reduzieren .

In diesem Hadoop MapReduce-Anfänger-Tutorial lernen Sie Folgendes:

MapReduce-Architektur in Big Data im Detail erklärt

Der gesamte Prozess durchläuft vier Ausführungsphasen, nämlich Aufteilen, Zuordnen, Mischen und Reduzieren.

Lassen Sie uns nun in diesem MapReduce-Tutorial ein MapReduce-Beispiel verstehen:

Gehen Sie davon aus, dass Sie folgende Eingabedaten für Ihr MapReduce im Big Data-Programm haben |_+_|

MapReduce Architecture



Die endgültige Ausgabe der MapReduce-Aufgabe ist

Schlecht 1
Klasse 1
gut 1
Hadoop 3
ist 2
zu 1
Willkommen 1

Die Daten durchlaufen die folgenden Phasen von MapReduce in Big Data

Eingabeaufteilungen:

Eine Eingabe für einen MapReduce in Big Data-Job wird in Teile mit fester Größe unterteilt, die als bezeichnet werden Eingabeaufteilungen Eingabeaufteilung ist ein Teil der Eingabe, der von einer einzelnen Karte verbraucht wird

Kartierung

Dies ist die allererste Phase bei der Ausführung des Map-Reduce-Programms. In dieser Phase werden Daten in jedem Split an eine Abbildungsfunktion übergeben, um Ausgabewerte zu erzeugen. In unserem Beispiel besteht eine Aufgabe der Mapping-Phase darin, die Anzahl der Vorkommen jedes Wortes aus den Eingabeaufteilungen zu zählen (weitere Details zu Eingabeaufteilungen finden Sie weiter unten) und eine Liste in Form von . vorzubereiten

Mischen

Diese Phase verbraucht die Ausgabe der Mapping-Phase. Seine Aufgabe besteht darin, 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 zusammengeknüppelt.

Reduzieren

In dieser Phase werden Ausgabewerte aus der Shuffling-Phase aggregiert. Diese Phase kombiniert Werte aus der Shuffling-Phase und gibt einen einzelnen Ausgabewert zurück. Kurz gesagt fasst diese Phase den vollständigen Datensatz zusammen.

In unserem Beispiel aggregiert diese Phase die Werte aus der Shuffling-Phase, d. h. berechnet die Gesamtvorkommen jedes Wortes.

MapReduce-Architektur im Detail 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 von Vorteil, mehrere Splits zu haben, da die Verarbeitungszeit einer Splitt im Vergleich zu der Verarbeitungszeit der gesamten Eingabe gering ist. Wenn die Splits kleiner sind, ist die Verarbeitung besser mit Lastenausgleich, da wir die Splits parallel verarbeiten.
  • Es ist jedoch auch nicht wünschenswert, zu kleine Spalten zu haben. Wenn die Aufteilungen zu klein sind, beginnt die Überlastung der Verwaltung der Aufteilungen und der Erstellung von Map-Aufgaben, die gesamte Auftragsausführungszeit zu dominieren.
  • Für die meisten Jobs ist es besser, eine Teilungsgröße gleich der Größe eines HDFS-Blocks festzulegen (standardmäßig 64 MB).
  • Die Ausführung von Zuordnungsaufgaben führt dazu, dass die Ausgabe auf eine lokale Festplatte des jeweiligen Knotens geschrieben wird und nicht auf HDFS.
  • Der Grund für die Wahl des lokalen Datenträgers gegenüber HDFS besteht darin, eine Replikation zu vermeiden, die im Falle eines HDFS-Speichervorgangs stattfindet.
  • Die Kartenausgabe ist eine Zwischenausgabe, die von Reduzieraufgaben verarbeitet wird, um die endgültige Ausgabe zu erzeugen.
  • Sobald der Job abgeschlossen ist, kann die Kartenausgabe weggeworfen werden. Das Speichern in HDFS mit Replikation wird also übertrieben.
  • Im Falle eines Knotenfehlers führt Hadoop den Map-Task auf einem anderen Knoten erneut aus und erstellt die Map-Ausgabe neu, bevor die Map-Ausgabe von der Reduktionsaufgabe verbraucht wird.
  • Aufgabe reduzieren funktioniert nicht mit dem Konzept der Datenlokalität. Eine Ausgabe jeder Map-Aufgabe wird der Reduktions-Aufgabe zugeführt. Die Kartenausgabe wird an die Maschine übertragen, auf der die Reduzierungsaufgabe ausgeführt wird.
  • Auf dieser Maschine wird die Ausgabe zusammengeführt und dann an die benutzerdefinierte Reduzierfunktion übergeben.
  • Im Gegensatz zur Map-Ausgabe wird die Reduce-Ausgabe in HDFS gespeichert (das erste Replikat wird auf dem lokalen Knoten gespeichert und die anderen Replikate werden auf externen Knoten gespeichert). Schreiben Sie also die reduzierte Ausgabe

Wie organisiert MapReduce die Arbeit?

In diesem MapReduce-Tutorial erfahren wir nun, wie MapReduce funktioniert

Hadoop teilt die Arbeit in Aufgaben ein. Es gibt zwei Arten von Aufgaben:

  1. Kartenaufgaben (Splits & Zuordnung)
  2. Aufgaben reduzieren (Mischen, Reduzieren)

wie oben erwähnt.

Der gesamte Ausführungsprozess (Ausführung von Map- und Reduce-Aufgaben, beides) wird von zwei Arten von Entitäten gesteuert, die als a . bezeichnet werden

  1. Job-Tracker : Wirkt wie ein Meister (verantwortlich für die vollständige Ausführung des eingereichten Jobs)
  2. Mehrere Aufgaben-Tracker : Verhält sich wie Sklaven, jeder von ihnen führt die Arbeit aus

Für jeden Job, der im System zur Ausführung übergeben wird, gibt es einen Job-Tracker das liegt auf Namenode und da sind mehrere Tasktracker die wohnen auf Datenknoten .

So funktioniert Hadoop MapReduce

  • Ein Job wird in mehrere Tasks 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 Tasks so geplant werden, dass sie auf verschiedenen Datenknoten ausgeführt werden.
  • Die Ausführung der einzelnen Tasks wird dann durch den Task-Tracker überwacht, der sich auf jedem Datenknoten befindet, der einen Teil des Jobs ausführt.
  • Die Aufgabe des Aufgaben-Trackers besteht darin, den Fortschrittsbericht an den Job-Tracker zu senden.
  • Darüber hinaus sendet der Task-Tracker regelmäßig 'Herzschlag' Signal an den Jobtracker, um ihn über den aktuellen Zustand des Systems zu informieren.
  • Auf diese Weise verfolgt der Job-Tracker den Gesamtfortschritt jedes Jobs. Im Falle eines Task-Fehlers kann der Job-Tracker ihn auf einen anderen Task-Tracker umplanen.