Unterschiede zwischen PIG und MapReduce
Pig ist eine Skriptsprache, die zum Durchsuchen großer Datenmengen verwendet wird. Pig Latin ist eine Hadoop-Erweiterung, die die Hadoop-Programmierung vereinfacht, indem sie eine Datenverarbeitungssprache auf hoher Ebene bereitstellt. Da Pig Skripte erstellt, können wir die Funktionalität erreichen, indem wir nur sehr wenige Codezeilen schreiben. MapReduce ist eine Lösung zur Skalierung der Datenverarbeitung. MapReduce ist kein Programm, sondern ein Framework zum Schreiben verteilter Datenverarbeitungsprogramme. Programme, die mit dem MapReduce-Framework erstellt wurden, wurden erfolgreich auf Tausenden von Computern skaliert.
Einführung in PIG
Schwein ist ein Datenfluss und eine Hochsprache. Pig funktioniert mit allen Versionen in Hadoop.
Bestandteile des Schweins
- Schweinelatein - eine Sprache zum Ausdrücken von Datenflüssen
- Pig Engine - ein Motor auf Hadoop
Vorteile von PIG
- Benutzer müssen Hadoop nicht mehr optimieren
- Isoliert Benutzer vor Änderungen an Hadoop-Schnittstellen.
- Steigerung der Produktivität.
- In einem Test 10 Zeilen Pig Latin ≈ 200 Zeilen Java
- Was in Java 4 Stunden dauert, dauert in Pig Latin etwa 15 Minuten
- Offenes System für Nicht-Java-Programmierer
Wenn uns HIVE und PIG bekannt sind, müssen wir uns nicht um Code kümmern, wenn die Hadoop-Version auf eine höhere Version aktualisiert wird.
Beispiel: Wenn die Hadoop-Version 2.6 ist, wird sie auf 2.7 aktualisiert. PIG unterstützt in allen Versionen, egal ob der Code in den höheren Versionen funktioniert oder nicht.
Merkmale von PIG
Schweinelatein ist eine Datenflusssprache
- Bietet Unterstützung für Datentypen - Long, Float, Char-Array, Schemas und Funktionen
- Ist erweiterbar und unterstützt benutzerdefinierte Funktionen
- Metadaten sind nicht erforderlich, werden jedoch verwendet, wenn sie verfügbar sind
- Arbeitet mit Dateien in HDFS
- Bietet allgemeine Operationen wie JOIN, GROUP, FILTER, SORT
PIG-Nutzungsszenario
- Weblog-Verarbeitung
- Datenverarbeitung für Web-Suchplattformen
- Ad-hoc-Abfragen über große Datenmengen hinweg
- Rapid Prototyping von Algorithmen zur Verarbeitung großer Datenmengen
Wer benutzt Pig?
- Yahoo, einer der schwersten Nutzer von Hadoop, führt 40% aller Hadoop-Jobs in einem Schwein aus.
- Twitter ist auch ein bekannter Nutzer von Pig
Einführung in MapReduce
- In der Vergangenheit war die Verarbeitung immer größerer Datensätze ein Problem. Alle Ihre Daten und Berechnungen mussten auf eine einzige Maschine passen. Um an mehr Daten zu arbeiten, musste eine größere, teurere Maschine gekauft werden.
- Was ist also die Lösung für die Verarbeitung eines großen Datenvolumens, wenn dies auf einer einzelnen Maschine technisch oder finanziell nicht mehr machbar ist?
- MapReduce ist eine Lösung zur Skalierung der Datenverarbeitung.
MapReduce besteht aus 3 Phasen
Die folgenden Schritte werden nacheinander ausgeführt.
- Mapper-Phase
Eingabe vom HDFS-Dateisystem.
- Mischen und sortieren
Die Eingabe zum Mischen und Sortieren ist eine Ausgabe von Mapper
- Reduzierstück
Die Eingabe zum Reduzierer wird ausgegeben, um zu mischen und zu sortieren.
MapReduce versteht die Daten nur als Schlüssel-Wert-Kombination.
- Der Hauptzweck der Kartenphase besteht darin, alle Eingabedaten zu lesen und sie zu transformieren oder zu filtern. Die transformierten oder gefilterten Daten werden von der Geschäftslogik in der Reduktionsphase weiter analysiert, obwohl eine Reduktionsphase nicht unbedingt erforderlich ist.
- Der Hauptzweck der Reduktionsphase ist die Verwendung von Geschäftslogik, um eine Frage zu beantworten und ein Problem zu lösen.
Head to Head Vergleich zwischen PIG und MapReduce (Infografik)
Unten finden Sie die Top 4 Vergleiche zwischen PIG und MapReduce
Hauptunterschiede zwischen PIG und MapReduce
Nachfolgend sind die wichtigsten Unterschiede zwischen PIG und MapReduce aufgeführt
PIG oder MapReduce Schneller
Alle PIG-Jobs werden in MapReduce.so umgeschrieben, Map Reduce ist nur schneller.
Dinge, die nicht in PIG sein können
Wenn es schwierig ist, in Pig etwas auszudrücken, erhalten Sie eine Aufführung, dh Sie bauen etwas aus mehreren Primitiven auf
Einige Beispiele:
- Komplexe Gruppierungen oder Verknüpfungen
- Viele Datensätze kombinieren
- Komplexe Verwendung des verteilten Caches (replizierter Join)
- Komplexe Kreuzprodukte
- Verrückte Sachen in verschachtelten FOREACH machen
In diesen Fällen wird Pig eine Reihe von MapReduce-Jobs verlangsamen, die mit weniger hätten erledigt werden können.
Verwendung von MapReduce-Szenarien
- Verwenden Sie MapReduce, wenn knifflige Dinge zu erledigen sind.
Die Entwicklung ist in PIG viel schneller?
- Weniger Codezeilen, dh weniger Code, sparen dem Entwickler Zeit.
- Es sind weniger Java-Level-Bugs zu finden, aber diese Bugs sind schwerer zu finden.
Zusätzlich zu den oben genannten Unterschieden unterstützt PIG
- Entwickler können damit Daten an beliebiger Stelle in der Pipeline speichern.
- Erklärt Ausführungspläne.
- Hiermit können Operatoren ETL-Funktionen (Extrahieren, Transformieren und Laden) ausführen.
Head to Head Vergleich zwischen PIG und MapReduce
Unten sind die Listen der Punkte, beschreiben die Vergleiche zwischen PIG und MapReduce
Vergleichsbasis |
SCHWEIN |
Karte verkleinern |
Operationen |
|
|
Codezeilen und Ausführlichkeit | Multi-Query-Ansatz, wodurch die Länge der Codes reduziert wird. | Sie benötigen fast das Zehnfache der Anzahl der Leitungen, um dieselbe Aufgabe auszuführen. |
Zusammenstellung | Keine Notwendigkeit zum Kompilieren. Bei der Ausführung wird jeder Apache Pig-Operator intern in einen MapReduce-Job konvertiert. | MapReduce-Jobs haben einen langen Kompilierungsprozess. |
Code-Portabilität | Funktioniert mit allen Versionen in Hadoop | Keine Garantie, die mit jeder Version in Hadoop unterstützt wird |
Fazit - PIG vs MapReduce
Beispiel: Wir müssen die Wiederholung von Wörtern im Satz zählen.
Was ist der bessere Weg, um das Programm zu tun?
PIG oder MapReduce
Schreiben Sie das Programm in Schwein
input_lines = LOAD '/tmp/word.txt' AS (Zeile: chararray);
words = FOREACH input_lines GENERATE FLATTEN (TOKENIZE (Zeile)) AS word;
filtered_words = FILTER words BY word MATCHES '\\ w +';
word_groups = GROUP filters_words BY word;
word_count = FOREACH word_groups GENERATE COUNT (gefilterte_Wörter) AS count, group AS word;
ordered_word_count = ORDER word_count BY count DESC;
STORE ordered_word_count INTO '/tmp/results.txt';
Schreiben des Programms in MapReduce.
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.Job;
öffentliche Klasse WordCount (
public static void main (String () args) löst eine Ausnahme aus (
if (args.length! = 2) (
System.out.printf (
"Verwendung: WordCount \ n");
System.exit (-1);
)
@SuppressWarnings ("Verfall")
Job job = neuer Job ();
job.setJarByClass (WordCount.class);
job.setJobName ("Word Count");
FileInputFormat.setInputPaths (Job, neuer Pfad (args (0)));
FileOutputFormat.setOutputPath (Job, neuer Pfad (args (1)));
job.setMapperClass (WordMapper.class);
job.setReducerClass (SumReducer.class);
job.setOutputKeyClass (Text.class);
job.setOutputValueClass (IntWritable.class);
Boolescher Erfolg = job.waitForCompletion (true);
System.exit (Erfolg? 0: 1);
)
)
Wenn die Funktionalität von PIG erreicht werden kann, welchen Nutzen hat das Schreiben von Funktionen in MapReduce (Lange Codes)?
Immer das richtige Werkzeug für den Job verwenden, den Job schneller und besser erledigen.
Empfohlener Artikel
Dies war ein nützlicher Leitfaden für PIG vs MapReduce. Hier haben wir ihre Bedeutung, Kopf-an-Kopf-Vergleiche, Hauptunterschiede und Schlussfolgerungen besprochen. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -
- Pig vs Spark - 10 nützliche Unterschiede zu lernen
- Apache Pig vs Apache Hive - Top 12 nützliche Unterschiede
- Die besten 15 Dinge, die Sie über MapReduce vs Spark wissen müssen
- Wie funktioniert MapReduce?
- Verteilter Cache in Hadoop