"MapReduce" ist eine der dritten Komponenten von Hadoop. Dieser Framework ist für die Verarbeitung großer Daten parallel zu den anderen Aufgaben effizient. Der grundlegende Zweck von „MapReduce“ besteht darin, jeden Job gemeinsam in Gruppen zuzuordnen, und dies wird dann auf gleiche Aufgaben reduziert, um die Clusterbildung der Prozesse zu verringern. Die Aufgabe „MapReduce“ ist in zwei Phasen aufgeteilt.
Karte reduzieren Konzept und Architektur
Die Eingabedaten werden für die Verarbeitung von Daten über verschiedene Arbeitnehmer in kleine Stücke verteilt. Jeder kleine Stück wird einer Zwischensituation/einem Zustand zugeordnet. Diese Zwischendaten werden dann zusammen gesammelt, und dann tritt der Partitionierungsprozess auf, der auf einem Schlüsselwert basiert, um das gesamte verwandte Material miteinander zu halten. Dann führt diese Partitionierung von Daten zu dem resultierenden reduzierten Satz. Betrachten wir das folgende Diagramm.
Teile der Architektur
Die von der Aufgabe erhaltenen Jobteile werden dann auf die Karte übertragen und die Aufgaben reduzieren. Diese beiden Aufgaben haben Programme und Algorithmen, die von der Anforderung des Benutzers abhängen. Die Eingabedaten werden verwendet und in die Kartenaufgabe eingegeben. Die MAP-Aufgabe erzeugt dann das mittlere Schlüsselwertpaar, das als Eingabe für die Reduzierungsphase wirkt. In der Reduzierungsphase speichern nach der Durchführung des Reduktionsprozesses die endgültigen Ergebnisse in den HDFs. Wenn Sie sich nun auf das Beispiel von Map-Reduce bewegen, wird der Code im Beispiel mit beiden Phasen getrennt und deren Ausgabe erklärt.
Code von Python MapReduce
Die Hadoop -Streaming -API wird verwendet, um Daten zwischen der Karte zu übergeben und Code über Stdin und Stout zu reduzieren. Lesen Sie Eingabedaten und drucken Sie die Ausgabe „SYS.stdin ”wird verwendet. Andere Verfahren werden durch Hadoop -Streaming selbst behandelt.
Kartenphase
Die Hauptverwendung der Kartenphase besteht darin, die Eingabedaten in Form von Schlüsselpaaren zuzuordnen. Der von uns verwendete Schlüsselwert kann als ID eine Adresse ist, und der Wert enthält den tatsächlichen Wert, der aufbewahrt wird. Diese Kartenphase erzeugt einen Zwischenwert mit dem Schlüssel als Ausgabe. Um die Funktion zu reduzieren, wird die Ausgabe der Karte als Eingabe verwendet. Betrachten wir den Code für die Kartenfunktion. Diese Funktion ist auch als Mapper bekannt.py.
Sie sollten eine Datei erstellen und den Code in dieser Datei speichern. ich.E/Home/AQSA/Mapper.py. Das Kartenskript kann keinen Zwischenwert von Gesamtwörtern berechnen, der mehrmals auftritt. Stattdessen gibt es den Teilen der Daten, selbst die Wörter wiederholen mehrmalige Mal in den Eingabedaten. Wir werden die Funktion die Anzahl der Wörter reduzieren lassen, indem wir die Summe ihres Auftretens berechnen. Eine Sache, die berücksichtigt werden sollte, hat die Datei die Ausführungsgenehmigung (CHMOD+X/HOME/AQSA/MAPPER.py). Wenn Sie sich dem Code in Richtung Code bewegen, wird der erste Schritt des SYS -Moduls importiert. Die Eingabe wird durch die Verwendung einer für die Schleife durch Stdin genommen.
Für die Linie in sys.stdin:
Diese Funktion lesen dann die Zeile nach Linie, streifen Sie alle Zeilen ab und entfernen die Whitespaces zwischen ihnen durch die Streifenfunktion. In ähnlicher Weise wird jede Zeile mithilfe einer geteilten Funktion in Wörter aufgeteilt. Beide Funktionen werden im für den Loop -Körper deklariert.
# Zeile = Zeile.Streifen()Nachdem alle Funktionen ausgeführt wurden, wird jedes Wort nacheinander gedruckt.
Die Zwischenwerte werden vor dem Eintritt in die Reduktionsphase zwei Prozesse durchlaufen. Diese beiden Stufen sind das Schlurfen und die Sortierphase.
Mischphase:
Der Zweck dieser Funktion besteht darin, alle Werte eines ähnlichen Schlüssels zu assoziieren. Betrachten Sie beispielsweise ein Wort (ja, 1), das in der Ausgabedatei viermal aufgetreten ist. Nach dieser Phase wird der Ausgang als (ja, [1,1,1,1]) angezeigt.
Sortierungsphase:
Wenn der Mischungsprozess abgeschlossen ist, werden die Ausgangswerte an die Sortierphase gesendet. In dieser Phase werden alle Schlüssel und Werte automatisch sortiert. In Hadoop erfordert der Sortierprozess keinen Sortieralgorithmus, da es sich um einen automatischen Prozess handelt. Dies liegt an der integrierten Schnittstelle mit dem Namen "WriteLableCompierableInterface".
Phase reduzieren
Die Zwischenwerte werden dann nach der Sortierung auf die Reduzierung der Funktionsfunktion übertragen. Die Funktionsgruppe reduzieren die Daten abhängig vom Schlüsselwertpaar gemäß dem Reduzieralgorithmus, der vom Programmierer verwendet wird.
Der Code, den wir implementieren, wird in einer Datei des Pfades „/home/aqsa/reduzierter.py ”. Diese Datei liest die Ergebnisse aus dem „Mapper.PY ”-Fatei aus dem Stdin. Zu diesem Zweck das Format des „Mapper.PY ”-Datei und die Eingabe vom Mapper.PY sollte gleich sein. Danach übernimmt diese Funktion die Summe des Auftretens jedes Wortes, und die endgültige Ausgabe wird durch STDOut angezeigt.
#!/usr/bin/env pythonSYS -Modul wird zuerst importiert. Dann wird eine Variable für den Zählprozess 0 als Anfangswert deklariert. Wir haben die Eingangswerte für die Schleife übernommen, und die Zeilen sind genau wie die Kartenfunktion getrennt. Um die Wörter aufzuteilen, verwenden wir sowohl die Wörter als auch die Zählvariablen.
# Graf, Word = Zeile.split ('\ t', 1)Im Try -Körper wird der Zählvariablen der Wert zugewiesen. Mit dem If-Statement wird überprüft, ob das kommende Wort mit dem gespeicherten Wort übereinstimmt. Die Zählvariable wird inkrementiert.
# Current_count += countResultierender Wert
Um die Ergebnisse zu überprüfen, gehen Sie zum Terminal von Linux. Hier werden wir eine Zeichenfolge verwenden, die einzelne und sich wiederholende Wörter kombiniert, um vielseitige Ergebnisse zu erzielen.
$ echo „Karte und Reduzierung sind eine effektive und effiziente Funktion, bilden Sie eine Karte Reduzierung des Frameworks“ | /Home/AQSA/Mapper.py | sortieren -k1,1 | /Home/AQSA/Reduzierer.py
Abschluss
'MapReduce Python-Beispiel' besteht aus der grundlegenden Funktionalität und Architektur von Map-Reduce kollektiv und getrennt. Die Zwischenwertbildung spielt in diesem Zweck eine wichtige Rolle. Um den begrenzten Wert zu erzielen, müssen Sie dann, wenn Sie Big Data verwalten möchten, eine „MapReduce“ -Funktion im Programm verwenden. Das Lesen dieses Artikels ist eine Quelle vollständiger Informationen zur Funktion „MapReduce“.