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.
  1. Em um teste, 10 linhas de Pig Latin ≈ 200 linhas de Java
  2. O que leva 4 horas para escrever em Java leva cerca de 15 minutos no Pig Latin
  3. 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
  • Linguagem de fluxo de dados.
  • Linguagem de alto nível.
  • Realizar operações de junção em um porco é simples
  • Linguagem de processamento de dados.
  • Linguagem de baixo nível
  • Muito difícil de executar as operações de junção.
Linhas de código e verbosidadeAbordagem 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çãoNã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ódigoFunciona com qualquer uma das versões no HadoopNenhuma 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 -

  1. Porco vs Faísca - 10 diferenças úteis para aprender
  2. Apache Pig vs Apache Hive - As 12 principais diferenças úteis
  3. As 15 melhores coisas que você precisa saber sobre o MapReduce vs Spark
  4. Como o MapReduce funciona?
  5. Cache Distribuído no Hadoop

Categoria: