Forskelle mellem PIG vs MapReduce
Pig er et scriptingsprog, der bruges til at udforske store datasæt. Pig Latin er en Hadoop-udvidelse, der forenkler Hadoop-programmering ved at give et højt niveau databehandlingssprog. Da Pig er scripting, kan vi opnå funktionaliteten ved at skrive meget få kodelinjer. MapReduce er en løsning til skalering af databehandling. MapReduce er ikke et program, det er en ramme for at skrive distribuerede databehandlingsprogrammer. Programmer, der er skrevet ved hjælp af MapReduce-rammen, har succesfuld skaleret på tværs af tusinder af maskiner.
Introduktion til PIG
Gris er et dataflow og højt niveau sprog. Gris fungerer med en hvilken som helst af versionerne i Hadoop.
Komponenter af gris
- Gris-latin - et sprog, der bruges til at udtrykke datastrømme
- Pig Engine - en motor på toppen af Hadoop
Fordele ved PIG
- Fjerner behovet for brugere at indstille Hadoop
- Isolerer brugere fra ændringer i Hadoop-grænseflader.
- Stigende produktivitet.
- I en test 10 linjer med grisen latin ≈ 200 linjer Java
- Det, der tager 4 timer at skrive i Java, tager cirka 15 minutter i svin Latin
- Åbent system for ikke-Java-programmerere
Hvis vi er opmærksomme på HIVE og PIG, er der ingen grund til at passe på kode, hvis Hadoop-versionen er opgraderet til en højere version.
For eksempel: Hvis Hadoop-versionen er 2.6, nu opgraderes den til 2.7. PIG-understøtter i alle versioner behøver ikke at bekymre sig om koden fungerer eller ej i de højere versioner.
Funktioner af PIG
Gris-latin er et datastrømsprog
- Tilbyder support til datatyper - lang, float, char array, skemaer og funktioner
- Er udvidelig og understøtter brugerdefinerede funktioner
- Metadata kræves ikke, men bruges, når de er tilgængelige
- Fungerer på filer i HDFS
- Giver fælles operationer som JOIN, GROUP, FILTER, SORT
PIG-brugsscenarie
- Weblog-behandling
- Databehandling til websøgningsplatforme
- Ad hoc-forespørgsler på tværs af store datasæt
- Hurtig prototype af algoritmer til behandling af store datasæt
Hvem bruger gris
- Yahoo, en af de tyngste brugere af Hadoop, kører 40% af alle sine Hadoop-job i en svin.
- Twitter er også en anden kendt bruger af Pig
Introduktion til MapReduce
- Tidligere var behandling af stadig større datasæt et problem. Alle dine data og beregninger måtte passe på en enkelt maskine. For at arbejde på flere data skulle du købe en større og dyrere maskine.
- Så hvad er løsningen på at behandle en stor mængde data, når det ikke længere er teknisk eller økonomisk muligt at gøre på en enkelt maskine?
- MapReduce er en løsning til skalering af databehandling.
MapReduce har 3 faser / faser
Trinene nedenfor udføres i rækkefølge.
- Kortlægningsfase
Input fra HDFS-filsystemet.
- Bland og sorter
Input til blanding og sortering er en output fra mapper
- Reducer
Input til reduktionsenheden udsendes til blanding og sortering.
MapReduce forstår dataene kun i kombination af nøgleværdier.
- Hovedformålet med kortfasen er at læse alle inputdataene og transformere eller filtrere dem. De transformerede eller filtrerede data analyseres yderligere med forretningslogik i reduceringsfasen, skønt en reduktionsfase ikke er strengt påkrævet.
- Hovedformålet med reduktionsfasen er at anvende forretningslogik til at besvare et spørgsmål og løse et problem.
Sammenligning mellem hoved og hoved mellem PIG vs MapReduce (Infographics)
Nedenfor er de Top 4 sammenligninger mellem PIG vs MapReduce
Vigtige forskelle mellem PIG vs MapReduce
Nedenfor er de vigtigste forskelle mellem PIG vs MapReduce
PIG eller MapReduce hurtigere
Alle PIG-job skrives om i MapReduce.so, Map Reduce er kun hurtigere.
Ting, der ikke kan være i PIG
Når noget er svært at udtrykke i gris, ender du med en forestilling, dvs. at bygge noget op af flere primitiver
Nogle eksempler:
- Komplekse grupperinger eller sammenføjninger
- Kombination af masser af datasæt
- Kompleks anvendelse af den distribuerede cache (replikeret sammenføjning)
- Komplekse krydsprodukter
- Gør skøre ting i indlejret FOREACH
I disse tilfælde vil svin bremse en masse MapReduce-job, hvilket kunne have været gjort med mindre.
Brug af MapReduce-scenarier
- Når der er vanskelige ting at opnå, skal du bruge MapReduce.
Udviklingen er meget hurtigere i PIG?
- Færre kodelinjer, dvs. mindre kode sparer udviklerens tid.
- Færre fejl på java-niveau at arbejde, men disse fejl er sværere at finde ud af.
Ud over ovenstående forskelle understøtter PIG
- Det giver udviklere mulighed for at gemme data hvor som helst i pipeline.
- Erklarer udførelsesplaner.
- Det giver operatører mulighed for at udføre ETL (Extract, Transform and Load) -funktioner.
Sammenligning mellem hovedet og hovedet mellem PIG vs MapReduce
Nedenfor er lister over punkter, der beskriver sammenligningerne mellem PIG vs MapReduce
Grundlag for sammenligning |
SVIN |
MapReduce |
operationer |
|
|
Linjer med kode og verbositet | Multi-forespørgsel tilgang, hvilket reducerer kodernes længde. | kræver næsten 10 gange mere antallet af linjer for at udføre den samme opgave. |
Samling | Intet behov for sammenstilling. Ved udførelse konverteres hver Apache Pig-operatør internt til et MapReduce-job. | MapReduce-job har en lang kompilationsproces. |
Kodeportabilitet | Fungerer med nogen af versionerne i Hadoop | Ingen garanti, der understøtter med hver version i Hadoop |
Konklusion - PIG vs MapReduce
Eksempel: vi er nødt til at tælle gentagelsen af ord, der findes i sætningen.
Hvad er den bedste måde at gøre programmet på?
PIG eller MapReduce
Skrivning af programmet i svin
input_lines = LOAD '/tmp/word.txt' AS (linje: chararray);
ord = FOREACH input_lines GENERATE FLATTEN (TOKENIZE (line)) AS word;
filtered_words = FILTER ord efter ord MATCHES '\\ w +';
word_groups = GROUP filtered_words BY word;
word_count = FOREACH word_groups GENERATE COUNT (filtered_words) AS antal, gruppe AS word;
order_word_count = ORDER word_count BY count DESC;
BUTIK bestilte_word_count INTO '/tmp/results.txt';
Skrivning af programmet i 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;
offentlig klasse WordCount (
public static void main (streng () args) kaster undtagelse (
if (args.length! = 2) (
System.out.printf (
“Brug: WordCount \ n”);
System.exit (-1);
)
@SuppressWarnings ( ”udfasning”)
Jobjob = nyt job ();
job.setJarByClass (WordCount.class);
job.setJobName (“Word Count”);
FileInputFormat.setInputPaths (job, ny sti (args (0)));
FileOutputFormat.setOutputPath (job, ny sti (args (1)));
job.setMapperClass (WordMapper.class);
job.setReducerClass (SumReducer.class);
job.setOutputKeyClass (Text.class);
job.setOutputValueClass (IntWritable.class);
boolsk succes = job.waitForCompletion (sand);
System.exit (succes? 0: 1);
)
)
Hvis funktionaliteten kan opnås med PIG, hvad er brugen af skrivefunktionalitet i MapReduce (lange koder).
Brug altid det rigtige værktøj til jobbet, få jobbet hurtigere og bedre.
Anbefalet artikel
Dette har været en nyttig vejledning til PIG vs MapReduce her, vi har diskuteret deres betydning, sammenligning af hoved til hoved, nøgleforskelle og konklusioner. Du kan også se på de følgende artikler for at lære mere -
- Gris vs gnist - 10 nyttige forskelle at lære
- Apache Pig vs Apache Hive - Top 12 nyttige forskelle
- De 15 bedste ting, du skal vide om MapReduce vs Spark
- Hvordan MapReduce fungerer?
- Distribueret cache i Hadoop