¿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.
¿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.
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.blocksizepropiedad. - 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:
- Tareas de mapeo (Divisiones y mapeo)ping)
- 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:
- TrabajosTracker: actúa como un maestro y es responsable de la ejecución completa de un trabajo enviado.
- 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.
- 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


