¿Qué es MapReduce en Hadoop? Archiarquitectura y diagrama

⚡ Resumen inteligente

MapReduce es el modelo de programación de Hadoop que convierte un conjunto de datos grande en un resultado pequeño ejecutando una función map sobre cada división de entrada y luego una función reduce sobre los valores intermedios agrupados.

  • 🔘 Cuatro fases: Cada trabajo se ejecuta como una división, mapeoping, reorganizando y reduciendo, con pares clave-valor fluyendo entre cada etapa.
  • ☑️ Ejemplo trabajado: Tres líneas de texto se convierten en siete recuentos de palabras, mostrando exactamente lo que aporta cada fase.
  • Tallas divididas: Se ejecuta una tarea de mapeo por cada división de entrada, y el tamaño de la división normalmente coincide con el tamaño del bloque HDFS.
  • 🧪 Datos intermedios: La salida del mapa se escribe en el disco local en lugar de en HDFS, porque replicar datos desechables es un desperdicio.
  • 🛠️ Coordinación: Un trabajoTracker programa el trabajo y las tareasTracLos kers informan del progreso mediante señales periódicas de latidos cardíacos.
  • ⚠️ Nota de versión: YARN reemplazó ese par con un ResourceManager, NodeManagers y un ApplicationMaster por trabajo de Hadoop 2.x.

Arquitectura MapReduce en Hadoop explicada con un ejemplo

¿Qué es MapReduce en Hadoop?

MapReduce es un marco de software y un modelo de programación utilizado para procesar grandes cantidades de datos. Los programas MapReduce funcionan en dos fases: Map y Reduce. Las tareas de Map se ocupan de dividir y mapear.ping de datos mientras que las tareas de reducción reorganizan y reducen los datos.

Hadoop Es capaz de ejecutar programas MapReduce escritos en varios lenguajes: Java, Rubí, Python, y C++Los programas MapReduce son de naturaleza paralela, por lo que resultan muy útiles para realizar análisis de datos a gran escala utilizando múltiples máquinas en el clúster.

La entrada para cada fase son pares clave-valor. Además, cada programador debe especificar dos funciones: una función de mapeo y una función de reducción.

MapReduce ArchiTecnología en Big Data explicada con ejemplo.

Todo el proceso pasa por cuatro fases de ejecución, a saber: división, mapeoping, barajando y reduciendo.

Ahora, en este tutorial de MapReduce, vamos a entenderlo con un ejemplo de MapReduce.

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

Welcome to Hadoop Class
Hadoop is good
Hadoop is bad

El diagrama a continuación tracesas tres líneas a lo largo de cada fase, desde las divisiones de entrada a la izquierda hasta el recuento final de palabras a la derecha.

Diagrama de arquitectura de MapReduce tracing tres líneas de entrada a través de la división, mapeopingbarajar y reducir

El resultado final de la tarea MapReduce es

malos 1
Clase 1
bueno 1
Hadoop 3
is 2
a 1
Bienvenido 1

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

Divisiones de entrada

La entrada a un trabajo MapReduce en Big Data se divide en partes de tamaño fijo llamadas segmentos de entrada. Un segmento de entrada es un fragmento de la entrada que es consumido por un único mapeo.

Mapeo

Esta es la primera fase en la ejecución de un programa MapReduce. En esta fase, los datos de cada división se pasan a un mapa.ping función para producir valores de salida. En nuestro ejemplo, el trabajo del mapaping La fase consiste en contar el número de ocurrencias de cada palabra de las divisiones de entrada (más detalles sobre las divisiones de entrada se dan a continuación) y preparar una lista en forma de .

Arrastramiento

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

La reducción de

En esta fase, se agregan los valores de salida de la fase de aleatorización. Esta fase combina los valores de la fase de aleatorización y devuelve un único valor de salida. En resumen, esta fase sintetiza el conjunto de datos completo.

En nuestro ejemplo, esta fase agrega los valores de la fase de barajado, es decir, calcula el número total de veces que aparece cada palabra.

MapReduce Architectura explicada en detalle

Los puntos que se describen a continuación explican cómo se ubican y almacenan realmente las tareas de división, mapeo y reducción en todo el clúster.

  • Se crea una tarea de mapeo para cada división, que luego ejecuta la función de mapeo para cada registro en la división.
  • Siempre es beneficioso dividir los datos en varias partes, ya que el tiempo necesario para procesar cada parte es menor que el tiempo necesario para procesar la entrada completa. Al dividir los datos en partes más pequeñas, el procesamiento se distribuye mejor, puesto que se procesan en paralelo.
  • Sin embargo, tampoco es conveniente que las divisiones sean demasiado pequeñas. Cuando las divisiones son demasiado pequeñas, la sobrecarga que supone gestionarlas y crear tareas de mapeo empieza a dominar el tiempo total de ejecución del trabajo.
  • Para la mayoría de los trabajos, es mejor hacer que el tamaño de la división sea igual al tamaño de una HDFS bloque, que por defecto es de 128 MB a partir de Hadoop 2.x (era de 64 MB en Hadoop 1.x) y está controlado por el dfs.blocksize propiedad.
  • La ejecución de las tareas de mapeo da como resultado la escritura de la salida en un disco local en el nodo correspondiente, y no en HDFS.
  • La razón para elegir un disco local en lugar de HDFS es evitar la replicación que tiene lugar durante una operación de almacenamiento en HDFS.
  • La salida del mapa es una salida intermedia que se procesa mediante tareas de reducción 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 del mapa en otro nodo y vuelve a crear la salida del mapa.
  • Las tareas de reducción no se basan en el concepto de localidad de datos. El resultado de cada tarea de mapeo se envía a la tarea de reducción. El resultado del mapeo se transfiere a la máquina donde se ejecuta 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 mapeo, la salida del reduce se almacena en HDFS (la primera réplica se almacena en el nodo local y las demás en nodos externos). Por lo tanto, escribir la salida del reduce consume ancho de banda de red, pero solo en la misma medida que una canalización de escritura HDFS normal.

¿Cómo funciona MapReduce Organizes?

En este tutorial de MapReduce, aprenderemos cómo funciona MapReduce.

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

  1. Tareas de mapeo (Divisiones y mapeo)ping)
  2. Reducir tareas (reorganización, reducción)

El proceso de ejecución completo, es decir, la ejecución de las tareas Map y Reduce, está controlado por dos tipos de entidades llamadas:

  1. TrabajosTracker: actúa como un maestro y es responsable de la ejecución completa de un trabajo enviado.
  2. Tareas múltiplesTrackers: actúan como esclavos, cada uno de ellos realizando una parte del trabajo.

Por cada trabajo enviado para su ejecución en el sistema, hay un trabajo.Tracker que reside en el NameNode, y hay múltiples tareasTrackers que residen en los DataNodes.

Nota: el trabajoTracker y tareaTracEl par ker pertenece a la versión 1 de MapReduce (Hadoop 1.x). A partir de Hadoop 2.x, YARN divide esas tareas entre un ResourceManager a nivel de clúster, un NodeManager en cada nodo y un ApplicationMaster por trabajo, aunque las fases de mapeo, mezcla y reducción en sí mismas no han cambiado.

El diagrama a continuación muestra cómo se divide un trabajo enviado en tareas y traca través del grupo.

Diagrama que muestra un trabajo dividido en tareas de mapeo y reducción. tracpresionado por el trabajoTracker y tareaTrackers

  • Un trabajo se divide en varias tareas que luego se ejecutan en varios nodos de datos en un clúster.
  • Es responsabilidad del trabajo tracker para coordinar la actividad programando tareas para que se ejecuten en diferentes nodos de datos.
  • La ejecución de una tarea individual es supervisada por la tarea. tracker, que reside en cada nodo de datos que ejecuta parte del trabajo.
  • La tarea tracLa responsabilidad de ker es enviar el informe de progreso al trabajo. tracker
  • Además, la tarea tracker envía periódicamente una señal de "latido" al trabajo.Tracker para notificarle el estado actual del sistema.
  • Por lo tanto, el trabajo tracker se mantiene track del progreso general de cada trabajo. En caso de fallo de la tarea, el trabajo tracker puede reprogramarlo para una tarea diferente. tracker

Preguntas Frecuentes

YARN lo hizo, desde Hadoop 2.x en adelante. Un ResourceManager a nivel de clúster se encarga de la planificación, un NodeManager se ejecuta en cada nodo y hay un ApplicationMaster por trabajo. tracks sus tareas. Las fases de mapeo y reducción no se modifican.

Los modelos entrenados con el historial de trabajos anteriores predicen el tiempo de ejecución, recomiendan tamaños de división y cantidad de reductores, y detectan desviaciones con anticipación. También monitorean los valores de los contadores, señalando trabajos inusualmente lentos o que fallan antes de que finalice la ejecución.

Copilot maneja bien el andamiaje: firmas de mapeadores y reductores, genéricos, importaciones y llamadas de configuración del controlador. Decisiones de esquema, como qué campo es el grupoping Es fundamental seguir necesitando un desarrollador que conozca los datos.

Un punto de partida común es utilizar un número ligeramente inferior al de ranuras de reducción disponibles, de modo que cada reductor se ejecute en una sola oleada. Si se utilizan muy pocas, se generan colas largas; si se utilizan demasiadas, se producen muchos archivos de salida pequeños.

Un combinador es un minireductor opcional que se ejecuta sobre la salida del mapa antes de que esta atraviese la red. Reduce drásticamente el tráfico de mezcla, pero solo puede utilizarse cuando la operación de reducción es asociativa y conmutativa.

Spark Mantiene los resultados intermedios en memoria y representa un trabajo como un grafo dirigido de etapas, mientras que MapReduce escribe la salida intermedia en el disco entre fases. Spark Por lo tanto, es mucho más rápido para el trabajo iterativo.

El particionador decide qué reductor recibe cada clave intermedia, calculando por defecto el hash de la clave módulo el número de reductores. Se genera un hash personalizado cuando este deja un único reductor sobrecargado.

Hadoop crea una tarea de mapeo por cada división de entrada, y una división es un rango de bytes en lugar de un archivo completo. Un archivo grande produce muchas divisiones; muchos archivos pequeños producen tareas de mapeo minúsculas e ineficientes.

Resumir este post con: