Differenze tra PIG vs MapReduce
Pig è un linguaggio di scripting utilizzato per esplorare set di dati di grandi dimensioni. Pig Latin è un'estensione di Hadoop che semplifica la programmazione di Hadoop fornendo un linguaggio di elaborazione dati di alto livello. Dato che Pig sta scrivendo, possiamo ottenere la funzionalità scrivendo pochissime righe di codice. MapReduce è una soluzione per ridimensionare l'elaborazione dei dati. MapReduce non è un programma, è un framework per scrivere programmi di elaborazione dati distribuiti. I programmi scritti usando il framework MapReduce sono stati ridimensionati con successo su migliaia di macchine.
Introduzione al maiale
Pig è un flusso di dati e un linguaggio di alto livello. Pig funziona con qualsiasi versione di Hadoop.
Componenti del maiale
- Maiale latino - una lingua utilizzata per esprimere i flussi di dati
- Pig Engine - un motore in cima a Hadoop
Vantaggi del MAIALE
- Elimina la necessità per gli utenti di ottimizzare Hadoop
- Isola gli utenti dalle modifiche alle interfacce di Hadoop.
- Aumento della produttività.
- In una prova 10 linee di maiale latino ≈ 200 linee di Java
- Ciò che richiede 4 ore per scrivere in Java richiede circa 15 minuti in latino latino
- Sistema aperto a programmatori non Java
Se siamo a conoscenza di HIVE e PIG, non è necessario preoccuparsi del codice, se la versione di Hadoop viene aggiornata a una versione successiva.
Ad esempio: se la versione di Hadoop è 2.6 ora viene aggiornata a 2.7. PIG supporta in qualsiasi versione non preoccuparti se il codice funziona o meno nelle versioni superiori.
Caratteristiche di MAIALE
Il latino di maiale è un linguaggio di flusso di dati
- Fornisce supporto per tipi di dati: long, float, char array, schemi e funzioni
- È estensibile e supporta le funzioni definite dall'utente
- Metadati non richiesti, ma utilizzati quando disponibili
- Funziona su file in HDFS
- Fornisce operazioni comuni come JOIN, GROUP, FILTER, SORT
Scenario di utilizzo PIG
- Elaborazione del weblog
- Elaborazione dati per piattaforme di ricerca web
- Query ad hoc su grandi set di dati
- Prototipazione rapida di algoritmi per l'elaborazione di grandi set di dati
Chi usa il maiale
- Yahoo, uno degli utenti più pesanti di Hadoop, gestisce il 40% di tutti i suoi lavori Hadoop in un maiale.
- Twitter è anche un altro noto utente di Pig
Introduzione a MapReduce
- In passato, l'elaborazione di set di dati sempre più grandi era un problema. Tutti i tuoi dati e il tuo calcolo dovevano adattarsi a una singola macchina. Per lavorare su più dati, è stato necessario acquistare una macchina più grande e più costosa.
- Quindi, qual è la soluzione per elaborare un grande volume di dati quando non è più tecnicamente o finanziariamente possibile fare su una singola macchina?
- MapReduce è una soluzione per ridimensionare l'elaborazione dei dati.
MapReduce ha 3 fasi / fasi
I passaggi seguenti vengono eseguiti in sequenza.
- Fase del mappatore
Input dal file system HDFS.
- Mischia e ordina
L'input per la riproduzione casuale e l'ordinamento è un output del mapper
- Reducer
L'ingresso al riduttore viene emesso per la riproduzione casuale e l'ordinamento.
MapReduce comprenderà i dati solo in termini di combinazione chiave-valore.
- Lo scopo principale della fase della mappa è leggere tutti i dati di input e trasformarli o filtrarli. I dati trasformati o filtrati vengono ulteriormente analizzati dalla logica aziendale nella fase di riduzione, sebbene non sia strettamente necessaria una fase di riduzione.
- Lo scopo principale della fase di riduzione è utilizzare la logica aziendale per rispondere a una domanda e risolvere un problema.
Confronto testa a testa tra PIG vs MapReduce (infografica)
Di seguito sono riportati i primi 4 confronti tra PIG vs MapReduce
Differenze chiave tra PIG vs MapReduce
Di seguito sono le differenze più importanti tra PIG vs MapReduce
PIG o MapReduce più veloce
Tutti i lavori PIG vengono riscritti in MapReduce.so, Map Reduce è solo più veloce.
Cose che non possono essere in MAIALE
Quando qualcosa è difficile da esprimere in Pig, finirai con una performance, cioè costruendo qualcosa di diversi primitivi
Qualche esempio:
- Raggruppamenti o join complessi
- Combinazione di molti set di dati
- Utilizzo complesso della cache distribuita (join replicato)
- Prodotti trasversali complessi
- Facendo cose folli in FORESTA nidificata
In questi casi, Pig rallenterà un sacco di lavori MapReduce, che avrebbero potuto essere fatti con meno.
Utilizzo degli scenari MapReduce
- Quando ci sono cose difficili da raggiungere, usa MapReduce.
Lo sviluppo è molto più veloce in PIG?
- Meno righe di codice, ovvero un codice più piccolo, risparmiano il tempo dello sviluppatore.
- Meno bug a livello java da risolvere ma questi bug sono più difficili da scoprire.
Oltre alle differenze di cui sopra, supporta PIG
- Consente agli sviluppatori di archiviare dati ovunque nella pipeline.
- Dichiara i piani di esecuzione.
- Fornisce agli operatori le funzioni ETL (Estrai, Trasforma e Carica).
Confronto testa a testa tra PIG vs MapReduce
Di seguito sono riportati gli elenchi di punti, descrivi i confronti tra PIG vs MapReduce
Base per il confronto |
MAIALE |
Riduci mappa |
operazioni |
|
|
Linee di codice e verbosità | Approccio multi-query, riducendo così la lunghezza dei codici. | richiede quasi 10 volte di più il numero di righe per eseguire la stessa attività. |
Compilazione | Non c'è bisogno di compilazione. Al momento dell'esecuzione, ogni operatore Apache Pig viene convertito internamente in un processo MapReduce. | I lavori MapReduce hanno un lungo processo di compilazione. |
Portabilità del codice | Funziona con qualsiasi versione di Hadoop | Nessuna garanzia che supporta con ogni versione di Hadoop |
Conclusione - PIG vs MapReduce
Esempio: dobbiamo contare la ricorrenza delle parole presenti nella frase.
Qual è il modo migliore per fare il programma?
PIG o MapReduce
Scrivere il programma in maiale
input_lines = LOAD '/tmp/word.txt' AS (linea: chararray);
parole = FOREACH input_lines GENERATE FLATTEN (TOKENIZE (line)) AS word;
filtered_words = FILTRO parole PER MATCHES di parole '\\ w +';
word_groups = GROUP filtered_words BY word;
word_count = FOREACH word_groups GENERATE COUNT (filtered_words) AS count, group AS word;
order_word_count = ORDINA word_count BY count DESC;
STORE order_word_count INTO '/tmp/results.txt';
Scrivere il programma 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;
WordCount di classe pubblica (
public static void main (String () args) genera l'eccezione (
if (args.length! = 2) (
System.out.printf (
"Utilizzo: WordCount \ n");
System.exit (-1);
)
@SuppressWarnings ( “disapprovazione”)
Job job = new Job ();
job.setJarByClass (WordCount.class);
job.setJobName ("Conteggio parole");
FileInputFormat.setInputPaths (lavoro, nuovo percorso (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);
successo booleano = job.waitForCompletion (true);
System.exit (successo? 0: 1);
)
)
Se la funzionalità può essere raggiunta da PIG, qual è l'uso della funzionalità di scrittura in MapReduce (codici di lunghezza).
Utilizzare sempre lo strumento giusto per il lavoro, ottenere il lavoro più veloce e migliore.
Articolo raccomandato
Questa è stata una guida utile a PIG vs MapReduce qui abbiamo discusso del loro significato, confronti testa a testa, differenze chiave e conclusioni. Puoi anche consultare i seguenti articoli per saperne di più -
- Pig vs Spark - 10 Differenze utili Per imparare
- Apache Pig vs Apache Hive - Le 12 principali differenze utili
- Le 15 migliori cose che devi sapere su MapReduce vs Spark
- Come funziona MapReduce?
- Cache distribuita in Hadoop