Diferencias entre PIG y MapReduce

Pig es un lenguaje de script utilizado para explorar grandes conjuntos de datos. Pig Latin es una extensión de Hadoop que simplifica la programación de Hadoop al proporcionar un lenguaje de procesamiento de datos de alto nivel. Como Pig está creando scripts, podemos lograr la funcionalidad escribiendo muy pocas líneas de código. MapReduce es una solución para escalar el procesamiento de datos. MapReduce no es un programa, es un marco para escribir programas de procesamiento de datos distribuidos. Los programas escritos con el marco de MapReduce se han ampliado con éxito en miles de máquinas.

Introducción a PIG

Pig es un flujo de datos y lenguaje de alto nivel. Pig funciona con cualquiera de las versiones en Hadoop.

Componentes de cerdo

  • Pig Latin: un lenguaje utilizado para expresar flujos de datos
  • Motor de cerdo: un motor en la parte superior de Hadoop

Ventajas de PIG

  • Elimina la necesidad de que los usuarios sintonicen Hadoop
  • Aísla a los usuarios de los cambios en las interfaces de Hadoop.
  • Incrementos en la productividad.
  1. En una prueba, 10 líneas de Pig Latin ≈ 200 líneas de Java
  2. Lo que tarda 4 horas en escribir en Java tarda unos 15 minutos en Pig Latin
  3. Sistema abierto para programadores no Java

Si conocemos HIVE y PIG, no hay necesidad de preocuparse por el código, si la versión de Hadoop se actualiza a una versión superior.

Por ejemplo: si la versión de Hadoop es 2.6 ahora se actualiza a 2.7. PIG admite en cualquier versión, sin necesidad de preocuparse si el código funciona o no en las versiones superiores.

Características del CERDO

Pig Latin es un lenguaje de flujo de datos

  • Proporciona soporte para tipos de datos: largo, flotante, matriz de caracteres, esquemas y funciones
  • Es extensible y admite funciones definidas por el usuario
  • No se requieren metadatos, pero se usan cuando están disponibles
  • Opera en archivos en HDFS
  • Proporciona operaciones comunes como UNIRSE, GRUPO, FILTRO, ORDENAR

Escenario de uso de PIG

  • Procesamiento de weblog
  • Procesamiento de datos para plataformas de búsqueda web.
  • Consultas ad hoc en grandes conjuntos de datos.
  • Creación rápida de prototipos de algoritmos para procesar grandes conjuntos de datos

Quien usa Pig

  • Yahoo, uno de los usuarios más pesados ​​de Hadoop, ejecuta el 40% de todos sus trabajos de Hadoop en un cerdo.
  • Twitter también es otro usuario conocido de Pig

Introducción a MapReduce

  • En el pasado, procesar conjuntos de datos cada vez más grandes era un problema. Todos sus datos y cálculos tuvieron que caber en una sola máquina. Para trabajar en más datos, tenía que comprar una máquina más grande y más cara.
  • Entonces, ¿cuál es la solución para procesar un gran volumen de datos cuando ya no es factible técnica o financieramente en una sola máquina?
  • MapReduce es una solución para escalar el procesamiento de datos.

MapReduce tiene 3 etapas / fases

Los siguientes pasos se ejecutan en secuencia.

  • Fase del mapeador

Entrada del sistema de archivos HDFS.

  • Barajar y ordenar

La entrada para barajar y ordenar es una salida de mapper

  • Reductor

La entrada al reductor sale a barajar y ordenar.

MapReduce comprenderá los datos en términos de solo combinación de clave y valor.

  • El objetivo principal de la fase del mapa es leer todos los datos de entrada y transformarlos o filtrarlos. Los datos transformados o filtrados se analizan más a fondo mediante la lógica empresarial en la fase de reducción, aunque una fase de reducción no es estrictamente necesaria.
  • El objetivo principal de la fase reductora es emplear la lógica empresarial para responder una pregunta y resolver un problema.

Comparación cabeza a cabeza entre PIG y MapReduce (infografía)

A continuación se muestran las 4 principales comparaciones entre PIG y MapReduce

Diferencias clave entre PIG y MapReduce

A continuación se muestran las diferencias más importantes entre PIG y MapReduce

PIG o MapReduce más rápido

Cualquier trabajo PIG se reescribe en MapReduce.so, Map Reduce es solo más rápido.

Cosas que no pueden estar en PIG

Cuando algo es difícil de expresar en Pig, vas a terminar con una actuación, es decir, construir algo de varias primitivas

Algunos ejemplos:

  • Agrupaciones complejas o uniones
  • Combinando muchos conjuntos de datos
  • Uso complejo de la caché distribuida (unión replicada)
  • Productos cruzados complejos
  • Haciendo cosas locas en ANIMADOS anidados

En estos casos, Pig ralentizará un montón de trabajos de MapReduce, lo que podría haberse hecho con menos.

Uso de escenarios MapReduce

  • Cuando haya cosas difíciles de lograr, use MapReduce.

El desarrollo es mucho más rápido en PIG?

  • Menos líneas de código, es decir, el código más pequeño ahorra el tiempo del desarrollador.
  • Menos errores de nivel java para resolver, pero estos errores son más difíciles de descubrir.

Además de las diferencias anteriores, PIG admite

  • Permite a los desarrolladores almacenar datos en cualquier parte de la tubería.
  • Declara planes de ejecución.
  • Proporciona operadores para realizar funciones ETL (Extraer, Transformar y Cargar).

Comparación cabeza a cabeza entre PIG y MapReduce

A continuación se encuentran las listas de puntos, describa las comparaciones entre PIG y MapReduce

Bases para la comparación

CERDO

Mapa reducido

Operaciones
  • Lenguaje de flujo de datos.
  • Lenguaje de alto nivel.
  • Realizar operaciones de unión en un cerdo son simples
  • Lenguaje de procesamiento de datos.
  • Lenguaje de bajo nivel
  • Muy difícil de realizar las operaciones de unión.
Líneas de código y verbosidad.Enfoque de múltiples consultas, lo que reduce la longitud de los códigos.requieren casi 10 veces más el número de líneas para realizar la misma tarea.
CompilacionNo hay necesidad de compilación. En la ejecución, cada operador de Apache Pig se convierte internamente en un trabajo MapReduce.Los trabajos de MapReduce tienen un largo proceso de compilación.
Portabilidad de códigoFunciona con cualquiera de las versiones en HadoopNo hay garantía que sea compatible con todas las versiones de Hadoop

Conclusión - PIG vs MapReduce

Ejemplo: necesitamos contar la recurrencia de las palabras presentes en la oración.

¿Cuál es la mejor manera de hacer el programa?

CERDO o MapReduce

Escribiendo el programa en cerdo

input_lines = LOAD '/tmp/word.txt' AS (línea: chararray);

palabras = ANTERIOR input_lines GENERATE FLATTEN (TOKENIZE (línea)) COMO palabra;

filter_words = FILTRAR palabras POR palabra COINCIDEN '\\ w +';

word_groups = GROUP GROUP_words POR palabra;

word_count = FOREACH word_groups GENERATE COUNT (filter_words) AS count, group AS word;

pedido_palabras_contado = ORDEN recuento de palabras POR conteo DESC;

ALMACENAR pedido_cuenta_palabras EN '/tmp/results.txt';

Escribir el programa en 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;

clase pública WordCount (

public static void main (String () args) lanza Exception (

if (args.length! = 2) (

System.out.printf (

"Uso: WordCount \ n");

System.exit (-1);

)

@SuppressWarnings ("desuso")

Trabajo trabajo = trabajo nuevo ();

job.setJarByClass (WordCount.class);

job.setJobName ("Word Count");

FileInputFormat.setInputPaths (trabajo, nueva ruta (args (0)));

FileOutputFormat.setOutputPath (trabajo, nueva ruta (args (1)));

job.setMapperClass (WordMapper.class);

job.setReducerClass (SumReducer.class);

job.setOutputKeyClass (Text.class);

job.setOutputValueClass (IntWritable.class);

éxito booleano = job.waitForCompletion (verdadero);

System.exit (éxito? 0: 1);

)

)

Si PIG puede lograr la funcionalidad, ¿qué es el uso de la funcionalidad de escritura en MapReduce (códigos largos)?

Utilice siempre la herramienta adecuada para el trabajo, consiga el trabajo más rápido y mejor.

Artículo recomendado

Esta ha sido una guía útil para PIG vs MapReduce. Aquí hemos discutido su significado, comparaciones cara a cara, diferencias clave y conclusiones. También puede consultar los siguientes artículos para obtener más información:

  1. Pig vs Spark - 10 diferencias útiles para aprender
  2. Apache Pig vs Apache Hive - Top 12 diferencias útiles
  3. Las 15 mejores cosas que debes saber sobre MapReduce vs Spark
  4. ¿Cómo funciona MapReduce?
  5. Caché Distribuido en Hadoop

Categoría: