¿Qué es MapReduce en Hadoop? Arquitectura - Ejemplo

¿Qué es MapReduce en Hadoop?

MapReduce es un marco de software y un modelo de programación que se utiliza para procesar grandes cantidades de datos. El programa MapReduce funciona en dos fases, a saber, Map y Reduce. Las tareas de mapa se ocupan de la división y el mapeo de datos, mientras que las tareas de Reducir mezclan y reducen los datos.

Hadoop es capaz de ejecutar programas MapReduce escritos en varios lenguajes: Java, Ruby, Python y C ++. Los programas de Map Reduce en la computación en la nube son de naturaleza paralela, por lo que son muy útiles para realizar análisis de datos a gran escala utilizando múltiples máquinas en el clúster.

La entrada a cada fase son pares clave-valor . Además, cada programador necesita especificar dos funciones: función de mapa y función de reducción .

En este tutorial para principiantes de Hadoop MapReduce, aprenderá:

  • ¿Qué es MapReduce en Hadoop?
  • La arquitectura de MapReduce en Big Data explicada en detalle
  • La arquitectura de MapReduce explicada en detalle
  • ¿Cómo organiza MapReduce el trabajo?

La arquitectura de MapReduce en Big Data explicada en detalle

Todo el proceso pasa por cuatro fases de ejecución, a saber, dividir, mapear, barajar y reducir.

Ahora, en este tutorial de MapReduce, comprendamos con un ejemplo de MapReduce:

Considere que tiene los siguientes datos de entrada para su programa MapReduce en Big Data

Welcome to Hadoop ClassHadoop is goodHadoop is bad

Arquitectura MapReduce

El resultado final de la tarea MapReduce es

malo 1
Clase 1
bien 1
Hadoop 3
es 2
a 1
Bienvenida 1

Los datos pasan por las siguientes fases de MapReduce en Big Data

Divisiones de entrada:

Una entrada a un trabajo de MapReduce en Big Data se divide en partes de tamaño fijo llamadas divisiones de entrada La división de entrada es una parte de la entrada que consume un solo mapa

Cartografía

Esta es la primera fase en la ejecución del programa map-reduce. En esta fase, los datos de cada división se pasan a una función de mapeo para producir valores de salida. En nuestro ejemplo, un trabajo de la fase de mapeo es contar una cantidad de ocurrencias de cada palabra de las divisiones de entrada (más detalles sobre la división de entrada se dan a continuación) y preparar una lista en forma de

Arrastramiento

Esta fase consume la salida de la fase de mapeo. Su tarea es consolidar los registros relevantes de la salida de la fase de mapeo. En nuestro ejemplo, las mismas palabras se agrupan junto con su frecuencia respectiva.

Reducir

En esta fase, se agregan los valores de salida de la fase de barajado. Esta fase combina valores de la fase Shuffling y devuelve un único valor de salida. En resumen, esta fase resume el conjunto de datos completo.

En nuestro ejemplo, esta fase agrega los valores de la fase Shuffling, es decir, calcula el total de ocurrencias de cada palabra.

La arquitectura de MapReduce explicada en detalle

  • Se crea una tarea de mapa para cada división que luego ejecuta la función de mapa para cada registro en la división.
  • Siempre es beneficioso tener múltiples divisiones porque el tiempo necesario para procesar una división es pequeño en comparación con el tiempo necesario para procesar toda la entrada. Cuando las divisiones son más pequeñas, es mejor equilibrar la carga del procesamiento, ya que estamos procesando las divisiones en paralelo.
  • Sin embargo, tampoco es deseable tener divisiones de tamaño demasiado pequeño. Cuando las divisiones son demasiado pequeñas, la sobrecarga de administrar las divisiones y la creación de tareas de mapas comienza a dominar el tiempo total de ejecución del trabajo.
  • Para la mayoría de los trabajos, es mejor hacer un tamaño de división igual al tamaño de un bloque HDFS (que es 64 MB, de forma predeterminada).
  • La ejecución de tareas de mapa da como resultado la escritura de salida en un disco local en el nodo respectivo y no en HDFS.
  • La razón para elegir el disco local en lugar de HDFS es evitar la replicación que tiene lugar en el caso de operación de almacenamiento HDFS.
  • La salida del mapa es una salida intermedia que se procesa mediante tareas reducidas para producir la salida final.
  • Una vez que se completa el trabajo, la salida del mapa se puede desechar. Por lo tanto, almacenarlo en HDFS con replicación se vuelve excesivo.
  • En caso de falla del nodo, antes de que la tarea de reducción consuma la salida del mapa, Hadoop vuelve a ejecutar la tarea de mapa en otro nodo y vuelve a crear la salida del mapa.
  • Reducir tarea no funciona en el concepto de localidad de datos. Una salida de cada tarea de mapa se envía a la tarea de reducción. La salida del mapa se transfiere a la máquina donde se está ejecutando la tarea de reducción.
  • En esta máquina, la salida se fusiona y luego se pasa a la función de reducción definida por el usuario.
  • A diferencia de la salida del mapa, la salida reducida se almacena en HDFS (la primera réplica se almacena en el nodo local y otras réplicas se almacenan en nodos fuera del bastidor). Entonces, escribiendo la salida reducida

¿Cómo organiza MapReduce el trabajo?

Ahora, en este tutorial de MapReduce, aprenderemos cómo funciona MapReduce

Hadoop divide el trabajo en tareas. Hay dos tipos de tareas:

  1. Tareas de mapa (divisiones y mapeo)
  2. Reducir tareas (barajar, reducir)

como se ha mencionado más arriba.

El proceso de ejecución completo (ejecución de tareas Map y Reduce, ambas) está controlado por dos tipos de entidades llamadas

  1. Jobtracker : actúa como un maestro (responsable de la ejecución completa del trabajo enviado)
  2. Múltiples rastreadores de tareas : actúan como esclavos, cada uno de ellos realiza el trabajo

Por cada trabajo enviado para su ejecución en el sistema, hay un Jobtracker que reside en Namenode y hay varios tasktracker que residen en Datanode .

Cómo funciona Hadoop MapReduce
  • Un trabajo se divide en varias tareas que luego se ejecutan en varios nodos de datos en un clúster.
  • Es responsabilidad del rastreador de trabajos coordinar la actividad programando tareas para que se ejecuten en diferentes nodos de datos.
  • Luego, la ejecución de la tarea individual debe ser supervisada por el rastreador de tareas, que reside en cada nodo de datos que ejecuta parte del trabajo.
  • La responsabilidad del rastreador de tareas es enviar el informe de progreso al rastreador de trabajos.
  • Además, el rastreador de tareas envía periódicamente una señal de "latido" al Jobtracker para notificarle el estado actual del sistema.
  • Por lo tanto, el rastreador de trabajos realiza un seguimiento del progreso general de cada trabajo. En caso de que la tarea falle, el rastreador de trabajos puede reprogramarla en un rastreador de tareas diferente.

Articulos interesantes...