Diferenças entre PIG e MapReduce
Pig é uma linguagem de script usada para explorar grandes conjuntos de dados. O Pig Latin é uma extensão do Hadoop que simplifica a programação do Hadoop, fornecendo uma linguagem de processamento de dados de alto nível. Como o Pig está criando scripts, podemos obter a funcionalidade escrevendo muito poucas linhas de código. O MapReduce é uma solução para dimensionar o processamento de dados. O MapReduce não é um programa, é uma estrutura para escrever programas de processamento de dados distribuídos. Os programas gravados usando a estrutura MapReduce foram escalados com sucesso em milhares de máquinas.
Introdução ao PIG
Pig é um fluxo de dados e uma linguagem de alto nível. O Pig trabalha com qualquer uma das versões no Hadoop.
Componentes do porco
- Pig Latin - uma linguagem usada para expressar fluxos de dados
- Pig Engine - um mecanismo no topo do Hadoop
Vantagens do porco
- Remove a necessidade de os usuários ajustarem o Hadoop
- Isola os usuários de alterações nas interfaces do Hadoop.
- Aumentos na produtividade.
- Em um teste, 10 linhas de Pig Latin ≈ 200 linhas de Java
- O que leva 4 horas para escrever em Java leva cerca de 15 minutos no Pig Latin
- Sistema aberto para programadores não Java
Se tivermos conhecimento do HIVE e do PIG, não há necessidade de se preocupar com o código, se a versão do Hadoop for atualizada para uma versão superior.
Por exemplo: se a versão do Hadoop for 2.6 agora, ela será atualizada para 2.7. O PIG suporta em qualquer versão, não precisa se preocupar se o código funciona ou não nas versões superiores.
Recursos do PIG
Pig Latin é uma linguagem de fluxo de dados
- Fornece suporte para tipos de dados - longo, flutuante, matriz de caracteres, esquemas e funções
- É extensível e suporta funções definidas pelo usuário
- Metadados não necessários, mas usados quando disponíveis
- Opera em arquivos no HDFS
- Fornece operações comuns como JOIN, GROUP, FILTER, SORT
Cenário de uso do porco
- Processamento de blogs
- Processamento de dados para plataformas de pesquisa na web
- Consultas ad hoc em grandes conjuntos de dados
- Prototipagem rápida de algoritmos para processar grandes conjuntos de dados
Quem usa porco
- O Yahoo, um dos usuários mais pesados do Hadoop, executa 40% de todos os seus trabalhos no Hadoop em um porco.
- O Twitter também é outro usuário bem conhecido do Pig
Introdução ao MapReduce
- No passado, o processamento de conjuntos de dados cada vez maiores era um problema. Todos os seus dados e computação tinham que caber em uma única máquina. Para trabalhar com mais dados, você precisava comprar uma máquina maior e mais cara.
- Então, qual é a solução para processar um grande volume de dados quando não é mais tecnicamente ou financeiramente viável fazer em uma única máquina?
- O MapReduce é uma solução para dimensionar o processamento de dados.
O MapReduce possui 3 estágios / fases
Os passos abaixo são executados em sequência.
- Fase do mapeador
Entrada do sistema de arquivos HDFS.
- Aleatório e classificação
A entrada para embaralhar e classificar é uma saída do mapeador
- Redutor
A entrada para o redutor é produzida para embaralhar e classificar.
O MapReduce entenderá os dados apenas em termos de combinação de valor-chave.
- O principal objetivo da fase do mapa é ler todos os dados de entrada e transformá-los ou filtrá-los. Os dados transformados ou filtrados são analisados ainda mais pela lógica de negócios na fase de redução, embora uma fase de redução não seja estritamente necessária.
- O principal objetivo da fase de redução é empregar a lógica de negócios para responder a uma pergunta e resolver um problema.
Comparação cara a cara entre PIG vs MapReduce (Infographics)
Abaixo está as 4 principais comparações entre PIG e MapReduce
Principais diferenças entre PIG e MapReduce
Abaixo estão as diferenças mais importantes entre PIG e MapReduce
PIG ou MapReduce mais rápido
Quaisquer trabalhos PIG são reescritos no MapReduce.so, o Map Reduce é apenas mais rápido.
Coisas que não podem estar no PIG
Quando algo é difícil de expressar no Pig, você terá uma performance, ou seja, construindo algo com várias primitivas
Alguns exemplos:
- Agrupamentos ou junções complexos
- Combinando muitos conjuntos de dados
- Uso complexo do cache distribuído (junção replicada)
- Produtos transversais complexos
- Fazendo coisas loucas no FOREACH aninhado
Nesses casos, o Pig desacelerará vários trabalhos do MapReduce, o que poderia ter sido feito com menos.
Uso de cenários MapReduce
- Quando houver coisas complicadas para obter, use o MapReduce.
O desenvolvimento é muito mais rápido no PIG?
- Menos linhas de código, ou seja, menor o código, economiza o tempo do desenvolvedor.
- Menos erros de nível java para resolver, mas esses erros são mais difíceis de descobrir.
Além das diferenças acima, o PIG suporta
- Ele permite que os desenvolvedores armazenem dados em qualquer lugar do pipeline.
- Declara planos de execução.
- Ele fornece operadores para executar funções ETL (Extrair, Transformar e Carregar).
Comparação cara a cara entre PIG vs MapReduce
Abaixo estão as listas de pontos, descreva as comparações entre PIG e MapReduce
Base para comparação |
PORCO |
MapReduce |
Operações |
|
|
Linhas de código e verbosidade | Abordagem de várias consultas, reduzindo assim o comprimento dos códigos. | requer quase 10 vezes mais o número de linhas para executar a mesma tarefa. |
Compilação | Não há necessidade de compilação. Na execução, todo operador do Apache Pig é convertido internamente em uma tarefa MapReduce. | Os trabalhos do MapReduce têm um longo processo de compilação. |
Portabilidade de código | Funciona com qualquer uma das versões no Hadoop | Nenhuma garantia compatível com todas as versões do Hadoop |
Conclusão - PIG vs MapReduce
Exemplo: precisamos contar a recorrência das palavras presentes na frase.
Qual é a melhor maneira de fazer o programa?
PIG ou MapReduce
Escrevendo o programa em porco
input_lines = LOAD '/tmp/word.txt' AS (linha: chararray);
words = FOREACH input_lines GERATE FLATTEN (TOKENIZE (linha)) AS word;
filter_words = FILTRAR palavras por palavra JOGOS '\\ w +';
word_groups = GRUPO palavras filtradas POR palavra;
word_count = FOREACH word_groups GERAR CONTAGEM (palavras_filtradas) AS count, group AS word;
orders_word_count = ORDER word_count BY count DESC;
ARMAZENAR order_word_count INTO '/tmp/results.txt';
Escrevendo o programa no 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;
classe pública WordCount (
public static void main (String () args) lança a exceção (
if (args.length! = 2) (
System.out.printf (
"Uso: WordCount \ n");
System.exit (-1);
)
@SuppressWarnings ("descontinuação")
Trabalho job = new Job ();
job.setJarByClass (WordCount.class);
job.setJobName ("Contagem de Palavras");
FileInputFormat.setInputPaths (job, new Path (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);
sucesso booleano = job.waitForCompletion (true);
System.exit (sucesso? 0: 1);
)
)
Se a funcionalidade puder ser alcançada pelo PIG, qual é a utilidade da funcionalidade de gravação no MapReduce (códigos longos).
Sempre use a ferramenta certa para o trabalho, faça o trabalho mais rápido e melhor.
Artigo recomendado
Este foi um guia útil para o PIG vs o MapReduce. Aqui discutimos seu significado, comparações frente a frente, principais diferenças e conclusões. Você também pode consultar os seguintes artigos para saber mais -
- Porco vs Faísca - 10 diferenças úteis para aprender
- Apache Pig vs Apache Hive - As 12 principais diferenças úteis
- As 15 melhores coisas que você precisa saber sobre o MapReduce vs Spark
- Como o MapReduce funciona?
- Cache Distribuído no Hadoop