Verschillen tussen PIG versus MapReduce
Pig is een scripttaal die wordt gebruikt voor het verkennen van grote gegevenssets. Pig Latin is een Hadoop-extensie die Hadoop-programmering vereenvoudigt door een gegevensverwerkingstaal op hoog niveau te bieden. Omdat Pig aan het scripten is, kunnen we de functionaliteit bereiken door heel weinig regels code te schrijven. MapReduce is een oplossing voor het schalen van gegevensverwerking. MapReduce is geen programma, het is een raamwerk om gedistribueerde gegevensverwerkingsprogramma's te schrijven. Programma's geschreven met behulp van het MapReduce-framework zijn met succes geschaald over duizenden machines.
Inleiding tot PIG
Pig is een Dataflow en High-Level Language. Pig werkt met alle versies in Hadoop.
Componenten van Pig
- Pig Latin - een taal die wordt gebruikt om gegevensstromen uit te drukken
- Pig Engine - een motor bovenop Hadoop
Voordelen van PIG
- Verwijdert de noodzaak voor gebruikers om Hadoop te tunen
- Isoleert gebruikers tegen wijzigingen in Hadoop-interfaces.
- Verhoging van de productiviteit.
- In één test 10 lijnen van Pig Latin lines 200 lijnen van Java
- Wat duurt 4 uur om te schrijven in Java duurt ongeveer 15 minuten in Pig Latin
- Open systeem voor niet-Java programmeurs
Als we ons bewust zijn van HIVE en PIG, hoeven we ons geen zorgen te maken over code, als de Hadoop-versie is geüpgraded naar een hogere versie.
Bijvoorbeeld: als de Hadoop-versie 2.6 nu is, wordt deze geüpgraded naar 2.7. PIG ondersteunt in alle versies, u hoeft zich geen zorgen te maken of de code werkt of niet in de hogere versies.
Kenmerken van PIG
Pig Latin is een datastroomtaal
- Biedt ondersteuning voor gegevenstypen - long, float, char array, schema's en functies
- Is uitbreidbaar en ondersteunt door de gebruiker gedefinieerde functies
- Metagegevens niet vereist, maar gebruikt indien beschikbaar
- Werkt op bestanden in HDFS
- Biedt algemene bewerkingen zoals JOIN, GROUP, FILTER, SORT
PIG Gebruiksscenario
- Weblog verwerking
- Gegevensverwerking voor webzoekplatforms
- Ad-hocquery's voor grote gegevenssets
- Snelle prototyping van algoritmen voor het verwerken van grote gegevenssets
Wie gebruikt Pig?
- Yahoo, een van de zwaarste gebruikers van Hadoop, voert 40% van alle Hadoop-banen in een varken uit.
- Twitter is ook een andere bekende gebruiker van Pig
Inleiding tot MapReduce
- In het verleden was het verwerken van steeds grotere datasets een probleem. Al uw gegevens en berekeningen moesten op één machine passen. Om aan meer gegevens te werken, moest u een grotere, duurdere machine kopen.
- Dus, wat is de oplossing voor het verwerken van een grote hoeveelheid gegevens wanneer dit niet langer technisch of financieel haalbaar is om op een enkele machine te doen?
- MapReduce is een oplossing voor het schalen van gegevensverwerking.
MapReduce heeft 3 fasen / fasen
De onderstaande stappen worden in volgorde uitgevoerd.
- Mapper-fase
Input van het HDFS-bestandssysteem.
- Shuffle en sorteer
Invoer voor shuffle en sortering is een uitvoer van mapper
- reducer
Invoer naar het verloopstuk wordt uitgevoerd om te worden geschud en gesorteerd.
MapReduce begrijpt de gegevens alleen als een combinatie van sleutel en waarde.
- Het hoofddoel van de kaartfase is om alle invoergegevens te lezen en te transformeren of filteren. De getransformeerde of gefilterde gegevens worden verder geanalyseerd door bedrijfslogica in de reductiefase, hoewel een reductiefase niet strikt vereist is.
- Het hoofddoel van de reductiefase is om bedrijfslogica te gebruiken om een vraag te beantwoorden en een probleem op te lossen.
Head to Head-vergelijking tussen PIG versus MapReduce (Infographics)
Hieronder vindt u de Top 4-vergelijkingen tussen PIG en MapReduce
Belangrijkste verschillen tussen PIG versus MapReduce
Hieronder staan de belangrijkste verschillen tussen PIG versus MapReduce
PIG of Map Sneller verkleinen
Alle PIG-taken worden herschreven in MapReduce.so, Map Reduce is alleen sneller.
Dingen die niet in PIG kunnen zijn
Wanneer iets moeilijk uit te drukken is in Varken, ga je eindigen met een uitvoering, dat wil zeggen iets opbouwen uit verschillende primitieven
Een paar voorbeelden:
- Complexe groeperingen of joins
- Veel gegevenssets combineren
- Complex gebruik van de gedistribueerde cache (gerepliceerde join)
- Complexe kruisproducten
- Gekke dingen doen in geneste VORM
In deze gevallen gaat Pig een aantal MapReduce-taken vertragen, wat met minder had kunnen gebeuren.
Gebruik van MapReduce-scenario's
- Wanneer er lastige dingen zijn om te bereiken, gebruik MapReduce.
Ontwikkeling is veel sneller in PIG?
- Minder coderegels, dat wil zeggen kleiner de code, bespaart de tijd van de ontwikkelaar.
- Minder bugs op Java-niveau om uit te werken, maar deze bugs zijn moeilijker te achterhalen.
Naast de bovengenoemde verschillen ondersteunt PIG
- Hiermee kunnen ontwikkelaars gegevens overal in de pijplijn opslaan.
- Verklaart uitvoeringsplannen.
- Hiermee kunnen operators ETL-functies (Extraheren, Transformeren en Laden) uitvoeren.
Vergelijking tussen PIG versus MapReduce
Hieronder staan de lijst met punten, beschrijf de vergelijkingen tussen PIG versus MapReduce
Basis voor vergelijking |
VARKEN |
MapReduce |
Activiteiten |
|
|
Lijnen van code en verbosity | Multi-query benadering, waardoor de lengte van de codes wordt verkort. | vereisen bijna 10 keer meer het aantal lijnen om dezelfde taak uit te voeren. |
Compilatie | Geen compilatie nodig. Bij uitvoering wordt elke Apache Pig-operator intern omgezet in een MapReduce-taak. | MapReduce-taken hebben een lang compilatieproces. |
Codeerbaarheid | Werkt met alle versies in Hadoop | Geen garantie die bij elke versie in Hadoop wordt ondersteund |
Conclusie - PIG versus MapReduce
Voorbeeld: we moeten de herhaling van woorden in de zin tellen.
Wat is de betere manier om het programma te doen?
PIG of MapReduce
Programma schrijven in varken
input_lines = LOAD '/tmp/word.txt' AS (regel: chararray);
words = VORIGE input_lines GENERAT FLATTEN (TOKENIZE (regel)) ALS woord;
filter_words = FILTERwoorden OP woord WIJZIGEN '\\ w +';
word_groups = GROEP gefilterde_woorden op woord;
word_count = VOOR ELK woord_groepen GENERATE COUNT (gefilterde_woorden) AS telling, groep AS word;
order_word_count = BESTEL word_count DOOR graaf DESC;
WINKEL WINKEL_woord_telling IN '/tmp/results.txt';
Programma schrijven in MapReduce.
org.apache.hadoop.fs.Path importeren;
org.apache.hadoop.io.IntWritable importeren;
org.apache.hadoop.io.Text importeren;
org.apache.hadoop.mapreduce.lib.input.FileInputFormat importeren;
org.apache.hadoop.mapreduce.lib.output.FileOutputFormat importeren;
org.apache.hadoop.mapreduce.Job importeren;
openbare klasse WordCount (
public static void main (String () args) gooit uitzondering (
if (args.length! = 2) (
System.out.printf (
"Gebruik: WordCount \ n");
System.exit (-1);
)
@SuppressWarnings ( “afschrijvingen”)
Taaktaak = nieuwe taak ();
job.setJarByClass (WordCount.class);
job.setJobName ("Word Count");
FileInputFormat.setInputPaths (job, nieuw pad (args (0)));
FileOutputFormat.setOutputPath (job, new Path (args (1)));
job.setMapperClass (WordMapper.class);
job.setReducerClass (SumReducer.class);
job.setOutputKeyClass (Text.class);
job.setOutputValueClass (IntWritable.class);
boolean success = job.waitForCompletion (true);
System.exit (succes? 0: 1);
)
)
Als de functionaliteit kan worden bereikt door PIG, wat is dan het nut van schrijffunctionaliteit in MapReduce (lange codes).
Gebruik altijd de juiste tool voor de taak, krijg de taak sneller en beter.
Aanbevolen artikel
Dit is een nuttige gids voor PIG versus MapReduce geweest. Hier hebben we de betekenis ervan besproken, van kop tot kop vergelijken, belangrijke verschillen en conclusies. U kunt ook de volgende artikelen bekijken voor meer informatie -
- Varken versus vonk - 10 nuttige verschillen om te leren
- Apache Pig vs Apache Hive - Top 12 nuttige verschillen
- De beste 15 dingen die u moet weten over Map Reduce vs Spark
- Hoe werkt MapReduce?
- Gedistribueerde cache in Hadoop