Skillnader mellan PIG vs MapReduce
Pig är ett skriptspråk som används för att utforska stora datamängder. Pig Latin är en Hadoop-förlängning som förenklar Hadoop-programmering genom att ge ett högnivå databehandlingsspråk. Eftersom Pig är scripting kan vi uppnå funktionaliteten genom att skriva mycket få kodrader. MapReduce är en lösning för skalning av databehandling. MapReduce är inte ett program, det är ett ramverk för att skriva distribuerade databehandlingsprogram. Program skrivna med hjälp av MapReduce-ramverket har framgångsrikt skalat över tusentals maskiner.
Introduktion till PIG
Pig är ett dataflow och högnivåspråk. Pig fungerar med någon av versionerna i Hadoop.
Komponenter av gris
- Pig Latin - ett språk som används för att uttrycka dataflöden
- Pig Engine - en motor ovanpå Hadoop
Fördelar med PIG
- Tar bort användarnas behov av att ställa in Hadoop
- Isolerar användare från ändringar i Hadoop-gränssnitt.
- Ökad produktivitet.
- I ett test tio rader med svin Latin ≈ 200 rader Java
- Det som tar fyra timmar att skriva i Java tar cirka 15 minuter på svin Latin
- Öppet system för icke-Java-programmerare
Om vi är medvetna om HIVE och PIG, finns det inget behov av att bry sig om kod, om Hadoop-versionen är uppgraderad till en högre version.
Till exempel: om Hadoop-versionen är 2.6 nu uppgraderas den till 2.7. PIG-stöd i alla versioner behöver inte oroa sig för om koden fungerar eller inte i de högre versionerna.
Funktioner hos PIG
Pig Latin är ett dataflödesspråk
- Ger stöd för datatyper - long, float, char array, scheman och funktioner
- Är utdragbar och stöder användardefinierade funktioner
- Metadata krävs inte, men används när de är tillgängliga
- Fungerar på filer i HDFS
- Ger vanliga operationer som JOIN, GROUP, FILTER, SORT
Scig-användningsscenario
- Weblogbehandling
- Databehandling för webbsökplattformar
- Ad hocfrågor i stora datamängder
- Snabb prototypning av algoritmer för behandling av stora datamängder
Vem använder gris
- Yahoo, en av de tyngsta användarna av Hadoop, driver 40% av alla sina Hadoop-jobb i en gris.
- Twitter är också en annan välkänd användare av Pig
Introduktion till MapReduce
- Tidigare var bearbetning av allt större datasätt ett problem. All din data och beräkning måste passa på en enda maskin. För att arbeta med mer data var du tvungen att köpa en större och dyrare maskin.
- Så, vad är lösningen på att behandla en stor mängd data när det inte längre är tekniskt eller ekonomiskt möjligt att göra på en enda maskin?
- MapReduce är en lösning för skalning av databehandling.
MapReduce har 3 steg / faser
Stegen nedan utförs i följd.
- Kartläggningsfas
Inmatning från HDFS-filsystemet.
- Blanda och sortera
Input to shuffle and sort är en utgång från mapper
- Reducer
Ingången till reduceraren matas ut för att blanda och sortera.
MapReduce förstår uppgifterna i termer av endast nyckelvärdeskombination.
- Huvudsyftet med kartfasen är att läsa all inmatningsdata och transformera eller filtrera den. Den transformerade eller filtrerade informationen analyseras vidare med affärslogik i reduceringsfasen, även om en reduceringsfas inte strikt krävs.
- Huvudsyftet med den reducerande fasen är att använda affärslogik för att svara på en fråga och lösa ett problem.
Jämförelse mellan huvud och huvud mellan PIG vs MapReduce (Infographics)
Nedan visas de 4 bästa jämförelserna mellan PIG vs MapReduce
Viktiga skillnader mellan PIG vs MapReduce
Nedan visas de viktigaste skillnaderna mellan PIG vs MapReduce
PIG eller MapReduce Snabbare
Alla PIG-jobb skrivs om i MapReduce.so, Map Reduce går bara snabbare.
Saker som inte kan vara i PIG
När något är svårt att uttrycka i gris, kommer du att sluta med en föreställning, dvs. bygga upp något av flera primitiv
Några exempel:
- Komplexa grupperingar eller sammanfogningar
- Kombinera massor av datamängder
- Komplex användning av den distribuerade cachen (replikerad anslutning)
- Komplexa korsprodukter
- Gör galna grejer i kapslade FOREACH
I dessa fall kommer Pig att sakta ner ett gäng MapReduce-jobb, vilket kunde ha gjorts med mindre.
Användning av MapReduce-scenarier
- Använd MapReduce när det finns svåra saker att uppnå.
Utvecklingen är mycket snabbare i PIG?
- Färre kodlinjer dvs mindre kod sparar utvecklarens tid.
- Färre buggar på java-nivå för att räkna ut men dessa buggar är svårare att ta reda på.
Förutom ovanstående skillnader stöder PIG
- Det gör det möjligt för utvecklare att lagra data var som helst i pipeline.
- Förklarar genomförandeplaner.
- Det ger operatörer att utföra ETL (Extract, Transform, and Load) -funktioner.
Jämförelse mellan huvud och huvud mellan PIG vs MapReduce
Nedan finns listor över punkter, beskriv jämförelserna mellan PIG vs MapReduce
Grund för jämförelse |
GRIS |
MapReduce |
Operationer |
|
|
Koder och verbositet | Flerfrågan och därmed minska längden på koderna. | kräver nästan tio gånger mer antal rader för att utföra samma uppgift. |
Kompilering | Inget behov av sammanställning. Vid körning konverteras varje Apache Pig-operatör internt till ett MapReduce-jobb. | MapReduce-jobb har en lång sammanställningsprocess. |
Kodportabilitet | Fungerar med någon av versionerna i Hadoop | Ingen garanti som stöder alla versioner i Hadoop |
Slutsats - PIG vs MapReduce
Exempel: vi måste räkna upp förekomsten av ord som finns i meningen.
Vad är det bättre sättet att göra programmet?
PIG eller MapReduce
Skriva programmet i gris
input_lines = LOAD '/tmp/word.txt' AS (rad: 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-räkning, grupp AS-ord;
order_word_count = ORDER word_count BY count DESC;
LAGRA order_word_count INTO '/tmp/results.txt';
Skriva programmet i MapReduce.
importera org.apache.hadoop.fs.Path;
importera org.apache.hadoop.io.IntWritable;
importera org.apache.hadoop.io.Text;
importera org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
importera org.apache.hadoop.mapreduce.Job;
WordCount för allmän klass (
public static void main (String () args) kastar undantag (
if (args.length! = 2) (
System.out.printf (
"Användning: WordCount \ n");
System.exit (-1);
)
@SuppressWarnings ( ”deprecation”)
Jobbjobb = nytt jobb ();
job.setJarByClass (WordCount.class);
job.setJobName (“Word Count”);
FileInputFormat.setInputPaths (jobb, ny sökväg (args (0)));
FileOutputFormat.setOutputPath (jobb, ny sökväg (args (1)));
job.setMapperClass (WordMapper.class);
job.setReducerClass (SumReducer.class);
job.setOutputKeyClass (Text.class);
job.setOutputValueClass (IntWritable.class);
booleska framgång = jobb.waitForCompletion (sant);
System.exit (framgång? 0: 1);
)
)
Om funktionaliteten kan uppnås av PIG, vad använder man för att skriva funktioner i MapReduce (Långa koder).
Använd alltid rätt verktyg för jobbet, få jobbet snabbare och bättre.
Rekommenderad artikel
Detta har varit en användbar guide till PIG vs MapReduce här som vi har diskuterat deras betydelse, jämförelser mellan huvud och huvud, viktiga skillnader och slutsatser. Du kan också titta på följande artiklar för att lära dig mer -
- Pig vs Spark - 10 användbara skillnader att lära sig
- Apache Pig vs Apache Hive - Topp 12 användbara skillnader
- De 15 bästa sakerna du behöver veta om MapReduce vs Spark
- Hur MapReduce fungerar?
- Distribuerad cache i Hadoop