hadoop mapreduce tutorial with examples what is mapreduce
In diesem Tutorial werden wir verstehen, was MapReduce ist, welche Vorteile es hat und wie Hadoop Map Reduce mit Beispielen funktioniert:
Im vorherigen Tutorial haben wir uns mit Hadoop HDFS und den Lese- und Schreibmechanismen vertraut gemacht. Lassen Sie uns nun eine andere Hadoop-Komponente untersuchen, nämlich MapReduce.
Lassen Sie uns Folgendes im Detail untersuchen:
- Was ist MapReduce?
- Seine Vorteile
- Was ist der genaue Ansatz von MapReduce?
=> Besuchen Sie hier für die exklusive BigData-Schulungsserie.
Was du lernen wirst:
Was ist MapReduce?
Fahren wir fort und beginnen mit Hadoop Components. Wie bereits erläutert, gibt es zwei Hauptkomponenten von Hadoop, nämlich Hadoop HDFS und Hadoop Map Reduce.
Das Hadoop HDFS ist ein Dateiverteilungssystem, mit dem eine große Datenmenge in mehreren Racks gespeichert werden kann.
Hier werden wir die Verarbeitungseinheit von Hadoop diskutieren, d. H. MapReduce.
Die nächste Frage lautet: Was ist Map Reduce und warum ist es erforderlich?
Hadoop MapReduce ist das 'Verarbeitungseinheit' Mit dieser Komponente können wir die auf Hadoop HDFS gespeicherten Big Data verarbeiten.
Aber was ist die genaue Anforderung? Warum brauchen wir diese Komponente von Hadoop?
Auf Hadoop HDFS gespeicherte Big Data werden traditionell nicht gespeichert. Die Daten werden in Datenblöcke unterteilt, die in den jeweiligen DataNodes gespeichert sind. Die gesamten Daten werden also nicht an einem zentralen Ort gespeichert.
Daher kann eine native Clientanwendung wie Java oder eine solche Anwendung die Daten nicht im aktuellen Format verarbeiten, und wir benötigen ein spezielles Framework, das die in den jeweiligen DataNodes gespeicherten fragmentierten Datenblöcke verarbeiten kann.
Die Verarbeitung erfolgt mit der Hadoop MapReduce-Verarbeitung.
Map Reduce auf den Punkt gebracht
Das obige Diagramm gibt einen Überblick über Map Reduce, seine Funktionen und Verwendungszwecke.
Beginnen wir mit den Anwendungen von MapReduce und wo es verwendet wird. Zum Beispiel, es wird genutzt für Klassifikatoren, Indizierung & Suche und Schaffung von Empfehlungsmotoren auf E-Commerce-Websites (Flipkart, Amazon usw.) wird es auch als verwendet Analytik von mehreren Unternehmen.
Wenn wir aus der Perspektive der Merkmale sehen, ist es ein Programmiermodell und kann verwendet werden für Großverteilt Modell wie Hadoop HDFS und verfügt über die Fähigkeit der parallelen Programmierung, die es sehr nützlich macht.
Wenn wir die Funktionen in Map Reduce sehen, werden zwei Funktionen ausgeführt, d. H. Map Function und Reduce Function.
Diese Technologie wurde von großen Organisationen wie Google, Yahoo, Facebook implementiert und auch von Apache Hadoop wie HDFS, PIG, HIVE und zum Speichern von Daten oder zum Ausführen und Verarbeiten von Big Data mit HBase, auch bekannt als No-SQL, übernommen.
Vorteile der Kartenreduzierung
Diese Technologie bietet zwei Vorteile.
beste Software zur Überwachung der CPU-Temperatur
# 1) Parallelverarbeitung
Der allererste Vorteil ist die Parallelverarbeitung. Mit Map Reduce können wir die Daten immer parallel verarbeiten.
Gemäß dem obigen Diagramm gibt es fünf Slave-Maschinen, und einige Daten befinden sich auf diesen Maschinen. Hier werden die Daten mit Hadoop Map Reduce parallel verarbeitet und somit schnell verarbeitet.
Tatsächlich passiert hier, dass der gesamte Datenblock von Hadoop HDFS in HDFS-Block aufgeteilt wird und Map-Reduce diese Datenblöcke verarbeitet und somit die Verarbeitung schnell wird.
# 2) Datenlokalität
Dies ist eine vielseitige Sache, die von Hadoop MapReduce bereitgestellt wird, d. H. Wir können die Daten dort verarbeiten, wo sie sind.
Was bedeutet das?
Im vorherigen HDFS-Lernprogramm haben wir verstanden, dass die Daten, die wir in Hadoop Cluster verschoben haben, in HDFS-Blöcke unterteilt werden und diese Blöcke in SlaveMachines oder DataNodes gespeichert werden. Das Map-Reduce erkennt die Verarbeitung und Logik für die jeweiligen Slave-Knoten oder DataNodes, auf denen sich die Daten als HDFS-Blöcke befinden.
Die Verarbeitung wird über einen kleineren Datenblock an mehreren Stellen parallel ausgeführt. Dies spart viel Zeit und Netzwerkbandbreite, die erforderlich sind, um Big Data von einem Ort an einen anderen zu verschieben.
Denken Sie daran, dass es sich bei den von uns verarbeiteten Daten um Big Data handelt, die in Blöcke unterteilt sind. Wenn wir die Big Data direkt über die zugewiesenen Netzwerkkanäle in eine Zentralisierungsmaschine verschieben und verarbeiten, erhalten wir keinen Vorteil, da wir sie verbrauchen werden die gesamte Bandbreite beim Verschieben der Daten auf einen zentralen Server.
Leistungen:
Mit Hadoop MapReduce machen wir das also nicht nur 'Parallelverarbeitung' Wir verarbeiten die Daten auch auf den jeweiligen Slave-Knoten oder DataNodes, auf denen die Datenblöcke vorhanden sind, und daher auch 'Einsparen von viel Netzwerkbandbreite' das ist sehr vorteilhaft.
Schließlich werden die SlaveMachines mit der Verarbeitung der in SlaveMachines gespeicherten Daten fertig und senden die Ergebnisse an die Master-Maschine zurück, da die Ergebnisse nicht so groß sind wie die Blöcke, die auf den SlaveMachines gespeichert wurden. Daher wird nicht viel Bandbreite verbraucht.
Die Slave-Maschinen senden das Ergebnis an die Master-Maschine zurück. Diese Ergebnisse werden zusammengefasst und das Endergebnis wird an die Client-Maschine zurückgesendet, die den Auftrag gesendet hat.
Hier stellt sich die Frage: Wer entscheidet, welche Daten an welchem DataNode verarbeitet werden sollen?
Der Client sendet den Job an den Ressourcenmanager, und der Ressourcenmanager gibt die Anweisung zum Ausführen des Jobs auf den jeweiligen DataNodes vor, auf denen sich die Daten befinden. Er entscheidet auf der Grundlage des nächsten verfügbaren DataNode, sodass viel Netzwerk vorhanden ist Bandbreite wird nicht genutzt.
Traditionelle Vs. MapReduce Way
Um dies zu erklären, nehmen wir eine reale Analogie zur Anzahl der Versicherungsnehmer der Versicherungsgesellschaft. Jeder kennt die Richtlinien der Versicherungsgesellschaft, da die meisten großen Versicherungsunternehmen ihre Niederlassungen in verschiedenen Städten haben.
In diesen Branchen gibt es „n“ Personen, die Lebensversicherungspolicen beantragt haben.
Nehmen wir ein Szenario, in dem wir fünf Zweigstellen von Versicherungsunternehmen haben, in denen Personen kommen und Lebensversicherungspolicen beantragen. Jetzt haben wir auch einen Hauptsitz dieser Versicherungsgesellschaft, der alle Informationen zu den verfügbaren und angesiedelten Filialen hat.
Wenn jedoch Personen in den jeweiligen Filialen A, B, C, D, E eine Lebensversicherung beantragen, werden die Versicherungsanträge in den jeweiligen Filialen selbst aufbewahrt, und diese Informationen werden nicht an den Hauptsitz der Versicherungsgesellschaft weitergegeben.
Traditioneller Weg:
Mal sehen, wie sich die Leute traditionell für die Police bewerben. Um dieses Problem traditionell zu lösen, werden alle Anträge in das Hauptquartier der Versicherungsgesellschaft verschoben und anschließend der Antragsprozess gestartet.
In diesem Fall müssen wir alle Anträge an den Hauptsitz der Versicherungsgesellschaft verschieben, was eine kostspielige Angelegenheit ist, d. H. Wir müssen alle Anträge aus den Niederlassungen der Versicherungsgesellschaft sammeln und an den Hauptsitz der Versicherungsgesellschaft weiterleiten.
Auf diese Weise sind die Kosten zusammen mit den enormen Anstrengungen bei dieser Aktivität verbunden.
Sortierbefehl unter Linux mit Beispielen
Ein weiterer Aspekt ist der überlastete Hauptsitz der Versicherungsgesellschaft, der alle Anträge bearbeiten muss, die von den Mitarbeitern für Policen in den jeweiligen Filialen beantragt wurden.
Da die Versicherungsgesellschaft die Anträge bearbeitet, die in allen Filialen eingereicht wurden, wird es lange dauern. Am Ende funktioniert dieser Prozess nicht sehr gut.
MapReduce Way
Mal sehen, wie Map-Reduce dieses Problem löst.
MapReduce folgt der Datenlokalität, d. H. Es werden nicht alle Anträge an den Hauptsitz der Versicherungsgesellschaft weitergeleitet, sondern die Anträge werden in den jeweiligen Niederlassungen parallel bearbeitet.
Sobald die Anträge, die auf jede Niederlassung angewendet wurden, bearbeitet wurden, senden sie die verarbeiteten Daten an den Hauptsitz der Versicherungsgesellschaft zurück.
Jetzt muss der Hauptsitz der Versicherungsgesellschaft nur noch die Anzahl der bearbeiteten Anträge zusammenfassen, die von den jeweiligen Niederlassungen gesendet wurden, und die Details in der jeweiligen Datenbank oder im jeweiligen Lagerzentrum aufbewahren.
Auf diese Weise wird die Verarbeitung sehr einfach und schnell und die Versicherungsnehmer erhalten die Vorteile in kürzester Zeit.
Karte im Detail reduzieren
In unserem vorherigen Beispiel hatten wir eine Eingabe (Anwendungen), die auf verschiedene Zweige verteilt waren, und jede Eingabe wurde von der jeweiligen Kartenfunktion verarbeitet.
Wir wissen, dass MapReduce zwei Funktionen hat, d. H. Map Function und Reduce Function.
Der Verarbeitungsteil, der für die jeweiligen Zweige ausgeführt wurde, wurde von der Kartenfunktion ausgeführt. Daher wurde jede Eingabe (Anwendung) in jeder Filiale mithilfe der Kartenfunktion verarbeitet. Anschließend wurden die verarbeiteten Details an den Hauptsitz der Versicherungsgesellschaft gesendet und der Aggregationsteil wird von der Reduzierungsfunktion ausgeführt.
Die aggregierten verarbeiteten Anwendungsdetails werden als Ausgabe angegeben.
Dies ist in unserem vorherigen Beispiel geschehen. Der gesamte Prozess wurde in die Map-Aufgabe und die Reduce-Aufgabe unterteilt.
Die Kartenaufgabe erhält eine Eingabe, und die Ausgabe der Kartenaufgabe wird als Eingabe an die Reduzierungsaufgabe übergeben, und diese Reduzierungsaufgabe gibt die Ausgabe schließlich an den Client weiter.
Um es besser zu verstehen, gehen wir die Anatomie von MapReduce durch.
Eine MapReduce-Aufgabe arbeitet mit einem Schlüssel-Wert-Paar. Wenn wir also über eine Karte sprechen, nimmt die Karte die Eingabe als Schlüsselwert und gibt die Ausgabe als Liste von Schlüsselwerten aus. Diese Liste der Schlüsselwerte durchläuft eine Mischphase, und die Eingabe des Schlüssels und eine Liste der Werte gingen an den Reduzierer.
Schließlich gibt uns der Reduzierer eine Liste der Schlüssel-Wert-Paare.
MapReduce-Beispiel - Word Count-Prozess
Nehmen wir ein anderes Beispiel, d. H. Word Count Process the MapReduce Way. Dieses Beispiel ist das gleiche wie das Einführungsbeispiel für die Java-Programmierung, d. H. 'Hello World'.
Gemäß dem Diagramm hatten wir einen Eingang und dieser Eingang wird geteilt oder in verschiedene Eingänge aufgeteilt. Dieser Vorgang wird als Eingabeaufteilung bezeichnet, und die gesamte Eingabe wird basierend auf dem neuen Zeilenzeichen in Datenaufteilungen unterteilt.
Die allererste Zeile ist der erste Eingang, d.h. Bigdata Hadoop MapReduce ist die zweite Zeile der zweite Eingang, d.h. MapReduce Hive Bigdata Ähnlich ist es für den dritten Eingang Hive Hadoop Hive MapReduce .
Fahren wir mit der nächsten Phase fort, d. H. Der Zuordnungsphase. In der Zuordnungsphase erstellen wir jetzt eine Liste von Schlüssel-Wert-Paaren. Die Eingabe ist also Schlüssel und Wert, hier ist Schlüssel nichts anderes als der Versatz der Zeilennummer. Die Zeilennummer ist der Schlüssel und die gesamte Zeile ist der Wert.
Für Zeile 1 ist der Versatz der Schlüssel und der Wert Bigdata Hadoop MapReduce . Im wirklichen Leben ist die Zeilennummer oder der Versatz eine Hexadezimalzahl. Um dies zu vereinfachen, betrachten wir sie jedoch nur als Nummer 1 oder 2.
Zeile 1 ist also der Schlüssel und die gesamte Zeile ist der Wert. Wenn die Zuordnungsfunktion durchlaufen wird, wird die Liste der Schlüssel-Wert-Paare erstellt. Zum Beispiel, Große Daten Die Funktion liest also jedes Wort der Zeile und markiert ein (1) nach dem Komma.
Es wird eins (1) als Wert markiert; mögen Bigdata, 1 Hadoop, 1 und MapReduce, 1 . Hier ist die Frage, warum wir nach jedem Wort eine (1) setzen?
Es ist weil Große Daten ist eine Zählung so Bigdata, 1 . Ähnlich, Hadoop, 1 und MapReduce, 1 haben selbst eine Zählung, deshalb markieren wir eine (1) als Wert. Auf die gleiche Weise haben wir für die zweite Zeile oder sagen wir Zeile 2, MapReduce Hive Bigdata .
Auf die gleiche Weise erstellt die Zuordnungsfunktion erneut die Liste der Schlüsselwertpaare, und somit wird gemäß der Anzahl die Liste der Schlüsselwertpaare erstellt MapReduce, 1 Bienenstock, 1 und Bigdata, 1 .
Wir erhalten dasselbe als Ergebnis der Zuordnungsfunktion für Zeile 3, d.h. Bienenstock, 2 Hadoop, 1 und MapReduce, 1 .
Fahren wir mit der Mischphase fort. In dieser Phase wird für jeden Schlüssel eine Liste erstellt. In der Mischphase wird der Schlüssel angezeigt Große Daten und es werden die Werte in die Liste aufgenommen. Mal sehen, was hier passiert.
Wie wir zwei eingehende Pfeile sehen können, stammt der erste Pfeil aus Liste 1 und ein weiterer Pfeil aus Liste 2, sodass das Ergebnis angezeigt wird Bigdata, (1,1) .
Ebenso, wenn wir das Wort sehen Hadoop wieder für Hadoop Eine weitere Liste wird für Werte erstellt. Wie wir sehen können, zeigen zwei eingehende Pfeile auf Mischen, was das Wort bedeutet Hadoop wird von Liste 2 bzw. Liste 3 aufgenommen, d. h. das Endergebnis nach dem Mischen wird sein Hadoop, (1, 1) .
Auf die gleiche Weise werden wir den Rest der Wörter wie bekommen Bienenstock, (1, 1, 1) und MapReduce, (1, 1, 1) zusammen mit ihrer Werteliste oder sagen Sie die Liste der Zählung gemäß der Verfügbarkeit von Wörtern in den jeweiligen Listen.
Kommen wir nun zur Reduzierungsphase. In dieser Phase beginnen wir mit der Aggregation der in der Liste vorhandenen Werte für jeden Schlüssel. So für Große Daten, es waren zwei Werte in der Liste vorhanden, d.h. (elf) Daher erfolgt die Übermittlung dieser Werte Bigdata, 2 .
Ebenso für Hadoop der Wert ist die Summe, d.h. (elf) Die Einreichung wird sein Hadoop, 2 .
In gleicher Weise für Bienenstock und Karte verkleinern, Die Einreichung für die Reduktionsfunktion wird sein Bienenstock, 3 und MapReduce, 3 beziehungsweise.
Zuletzt wird das Endergebnis an den Client zurückgesendet, wie in der folgenden Abbildung von „Der gesamte MapReduce-Wortzählprozess“ dargestellt.
Der gesamte MapReduce-Word Count-Prozess
c ++ generiert eine Zufallszahl zwischen 1 und 10
So funktioniert der gesamte Word Count-Prozess, wenn Sie MapReduce Way verwenden.
Fazit
In diesem Tutorial haben wir Folgendes gelernt:
- Hadoop Map Reduce ist das 'Verarbeitungseinheit' von Hadoop.
- Zur Verarbeitung der von Hadoop HDFS gespeicherten Big Data verwenden wir Hadoop Map Reduce.
- Es wird in der Suche und Indizierung, Klassifizierung, Empfehlung und Analyse verwendet.
- Es verfügt über Funktionen wie Programmiermodell, parallele Programmierung und verteiltes Modell in großem Maßstab.
- Entwurfsmuster von MapReduce sind: Zusammenfassung, Klassifizierung von Top-Datensätzen, Sortierung und Analyse wie Join und Auswahl.
- Es hat nur zwei Funktionen d.h. Mapper-Funktion und Reducer-Funktion.
- Parallele Verarbeitung und Datenlokalität sind die guten Vorteile von Hadoop MapReduce.
- Der Prozess von MapReduce ist in sechs Phasen unterteilt, d. H. INPUT, SPLITTING, MAPPING, SHUFFLING, REDUCING und FINAL RESULT.
Das ist alles für dieses Tutorial. In unseren kommenden Tutorials werden wir Folgendes behandeln:
- Wie funktioniert MapReduce mit YARN und seinen Komponenten?
- Anwendungsworkflow von YARN.
- Was ist Spark und was ist der Unterschied zwischen Hadoop und Spark?
=> Überprüfen Sie ALLE BigData-Tutorials hier.
Literatur-Empfehlungen
- Was ist Hadoop? Apache Hadoop Tutorial für Anfänger
- Python DateTime Tutorial mit Beispielen
- Data Mart Tutorial - Typen, Beispiele und Implementierung von Data Mart
- Dimensionales Datenmodell im Data Warehouse - Lernprogramm mit Beispielen
- Java Array Length Tutorial mit Codebeispielen
- Big Data Tutorial für Anfänger | Was ist Big Data?
- Unix Shell Scripting Tutorial mit Beispielen
- Selenium Find Element By Text Tutorial mit Beispielen