MapReduce Python Beispiel

MapReduce Python Beispiel
Während wir uns mit Daten befassen, stoßen wir oft auf eine große Datenmenge. Es gibt viele Methoden, um diesen Fall zu bewältigen. Viele Ansätze sind jedoch nicht in der Lage, die Situation umzugehen. Wir verwenden also Map-Reduce für solche Situationen. Ein „MapReduce“ ist ein Framework und ein Programmiermodell in der Hadoop -Architektur, das bei der Verarbeitung einer großen Datenmenge in Hadoop -Dateisystemen verwendet wird.

"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.

  • Kartenphase
  • Phase reduzieren

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

  • Klient: Es ist derjenige, der dafür verantwortlich ist, den Job für die Verarbeitungsfunktion auf „MapReduce“ zu übernehmen. Es kann die Möglichkeit von mehreren Kunden bestehen, die Jobs für die Verarbeitung kontinuierlich an den „MapReduce“ -Manager senden.
  • Arbeit: Es ist die tatsächliche Aufgabe/Arbeit, die der Kunde dies ausführen möchte, die viele kleinere Aufgaben enthält, die der Kunde für die Ausführung wünscht.
  • Hadoop MapReduce Master: Die Funktion dieses Meisters besteht darin, den Job in kleinere Jobteile zu unterteilen.
  • Jobteile: Die Subjobs, die aus der Hauptaufgabefunktion erhalten wurden. Der resultierende Wert aller Jobteile bildet gemeinsam eine endgültige Ausgabe.
  • Eingabedaten: Die Daten, die für die Verarbeitung von Daten in die MAP-Reduce eingeführt werden.
  • Ausgabedaten: Enthält die begrenzten Wörter in einem Ergebnis.

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()
# Words = Zeile.Teilt() #!/usr/bin/env python
"" "Mapper.py "" ""
Importsystem
# Eingabe stammt von STDIN (Standardeingang)
für die Linie in sys.stdin:
# Entfernen Sie die Führung und das nachfolgende Weißespace
Zeile = Linie.Streifen()
# Teilen Sie die Zeile in Wörter auf
Wörter = Zeile.Teilt()
# Zähler erhöhen
Für Wort in Worten:
# Schreiben Sie die Ergebnisse in STDOut (Standardausgabe);
# tab delimited; Die triviale Wortzahl ist 1
print ('%s \ t%s'%(Wort, 1))

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 python
Reduzierer.py "" ""
Importsystem
current_word = Keine
Current_Count = 0
word = keine
für die Linie in sys.stdin:
Zeile = Linie.Streifen()
# Analysieren Sie die Eingabe, die wir von Mapper erhalten haben.py
Wort, Graf = Zeile.split ('\ t', 1)
versuchen:
count = int (count)
außer ValueError:
weitermachen
Wenn current_word == Wort:
current_count += count
anders:
Wenn Current_Word:
# Ergebnis in Stdout schreiben
print ('%s \ t%s'%(Current_Word, Current_Count))
current_count = count
current_word = word
Wenn current_word == Wort:
print ('%s \ t%s'%(Current_Word, Current_Count))

SYS -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 += count

Resultierender 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“.