Introducción a MapReduce
MapReduce es un componente computacional de Hadoop Framework para escribir fácilmente aplicaciones que procesan grandes cantidades de datos en paralelo y se almacenan en grandes grupos de máquinas de productos baratos de manera confiable y tolerante a fallas. En este tema, vamos a aprender sobre cómo funciona MapReduce.
MapReduce puede realizar cálculos distribuidos y paralelos utilizando grandes conjuntos de datos en una gran cantidad de nodos. Un trabajo de MapReduce generalmente divide los conjuntos de datos de entrada y luego procesa cada uno de ellos independientemente por las tareas de Mapa de una manera completamente paralela. La salida se ordena y se ingresa para reducir las tareas. Tanto la entrada como la salida del trabajo se almacenan en sistemas de archivos. Las tareas son programadas y monitoreadas por el marco.
¿Cómo funciona MapReduce?
La arquitectura de MapReduce contiene dos componentes principales como servicios Daemon responsables de ejecutar tareas de mapeador y reductor, monitorear y volver a ejecutar las tareas en caso de falla. En Hadoop 2 en adelante, Resource Manager y Node Manager son los servicios de daemon. Cuando el cliente de trabajo envía un trabajo de MapReduce, estos demonios entran en acción. También son responsables del procesamiento paralelo y las características de tolerancia a fallas de los trabajos de MapReduce.
En Hadoop 2 en adelante, las funcionalidades de gestión de recursos y programación de trabajos o monitoreo están segregadas por YARN (Yet Another Resource Negotiator) como diferentes demonios. En comparación con Hadoop 1 con Job Tracker y Task Tracker, Hadoop 2 contiene un Administrador de recursos global (RM) y Application Masters (AM) para cada aplicación.
- Job Client envía el trabajo al Administrador de recursos.
- El planificador de YARN Resource Manager es responsable de la coordinación de la asignación de recursos del clúster entre las aplicaciones en ejecución.
- El administrador de nodos de YARN se ejecuta en cada nodo y gestiona los recursos a nivel de nodo, coordinando con el administrador de recursos. Lanza y monitorea los contenedores de cómputo en la máquina en el clúster.
- Application Master ayuda a los recursos de Resource Manager y usa Node Manager para ejecutar y coordinar tareas de MapReduce.
- HDFS se usa generalmente para compartir los archivos de trabajo entre otras entidades.
Fases del modelo MapReduce
El modelo MapReduce tiene tres fases principales y una opcional:
1. Mapper
- Es la primera fase de la programación de MapReduce y contiene la lógica de codificación de la función de mapeador.
- La lógica condicional se aplica a 'n' número de bloques de datos distribuidos en varios nodos de datos.
- La función Mapper acepta pares clave-valor como entrada como (k, v), donde la clave representa la dirección de desplazamiento de cada registro y el valor representa todo el contenido del registro.
- La salida de la fase Mapper también estará en el formato clave-valor como (k ', v').
2. Barajar y ordenar
- La salida de varios mapeadores (k ', v'), luego pasa a la fase Aleatorio y Ordenar.
- Se eliminan todos los valores duplicados y se agrupan diferentes valores en función de claves similares.
- La salida de la fase Aleatorio y Ordenar serán pares clave-valor nuevamente como clave y matriz de valores (k, v ()).
3. Reductor
- La salida de la fase Shuffle and Sort (k, v ()) será la entrada de la fase Reductor.
- En esta fase, se ejecuta la lógica de la función reductora y todos los valores se agregan a sus teclas correspondientes.
- Reducer consolida las salidas de varios mapeadores y calcula la salida final del trabajo.
- La salida final se escribe en un solo archivo en un directorio de salida de HDFS.
4. Combinador
- Es una fase opcional en el modelo MapReduce.
- La fase de combinación se utiliza para optimizar el rendimiento de los trabajos de MapReduce.
- En esta fase, varias salidas de los mapeadores se reducen localmente a nivel de nodo.
- Por ejemplo, si diferentes salidas del mapeador (k, v) provenientes de un solo nodo contienen duplicados, entonces se combinan, es decir, se reducen localmente como una sola salida (k, v ()).
- Esta fase hace que la fase Mezclar y Ordenar funcione aún más rápido, lo que permite un rendimiento adicional en los trabajos de MapReduce.
Todas estas fases en un trabajo de MapReduce se pueden representar a continuación:
Por ejemplo, la lógica de MapReduce para encontrar el recuento de palabras en una matriz de palabras se puede mostrar a continuación:
fruit_array = (manzana, naranja, manzana, guayaba, uvas, naranja, manzana)
- La fase del mapeador tokeniza la matriz de entrada de palabras en 'n' número de palabras para dar la salida como (k, v). Por ejemplo, considere 'manzana'. La salida del mapeador será (manzana, 1), (manzana, 1), (manzana, 1).
- Mezclar y ordenar acepta la salida del asignador (k, v) y agrupa todos los valores de acuerdo con sus claves como (k, v ()). es decir (manzana, (1, 1, 1)).
- La fase reductora acepta la salida aleatoria y la clasificación y proporciona el agregado de los valores (manzana, (1 + 1 + 1)), correspondientes a sus claves. es decir (manzana, 3).
Ejecución especulativa del trabajo MapReduce
La velocidad de MapReduce está dominada por la tarea más lenta. Entonces, para aumentar la velocidad, un nuevo asignador funcionará en el mismo conjunto de datos al mismo tiempo. El que complete la tarea primero se considera como el resultado final y el otro se elimina. Es una técnica de optimización.
Beneficios de MapReduce
Aquí los beneficios de MapReduce mencionan a continuación
1. Tolerancia a fallos
- Durante la mitad de un trabajo de reducción de mapas, si una máquina que lleva algunos bloques de datos falla, la arquitectura maneja la falla.
- Considera copias replicadas de los bloques en máquinas alternativas para su posterior procesamiento.
2. Resiliencia
- Cada nodo actualiza periódicamente su estado al nodo maestro.
- Si un nodo esclavo no envía su notificación, el nodo maestro reasigna la tarea actualmente en ejecución de ese nodo esclavo a otros nodos disponibles en el clúster.
3. Rápido
- El procesamiento de datos es rápido ya que MapReduce usa HDFS como sistema de almacenamiento.
- MapReduce tarda minutos en procesar terabytes de grandes volúmenes de datos no estructurados.
4. Procesamiento paralelo
- Las tareas de MapReduce procesan múltiples fragmentos de los mismos conjuntos de datos en paralelo al dividir las tareas.
- Esto le da la ventaja de completar la tarea en menos tiempo.
5. Disponibilidad
- Se envían múltiples réplicas de los mismos datos a numerosos nodos en la red.
- Por lo tanto, en caso de falla, hay otras copias disponibles para procesar sin ninguna pérdida.
6. Escalabilidad
- Hadoop es una plataforma altamente escalable.
- Los sistemas RDBMS tradicionales no son escalables de acuerdo con el aumento en el volumen de datos.
- MapReduce le permite ejecutar aplicaciones desde una gran cantidad de nodos, utilizando terabytes y petabytes de datos.
7. Rentable
- La función de escalamiento horizontal de Hadoop junto con la programación MapReduce le permite almacenar y procesar datos de una manera muy efectiva y asequible.
- El ahorro de costos puede ser enorme como cifras de cientos de terabytes de datos.
Conclusión: cómo funciona MapReduce
Los datos modernos se están moviendo más hacia el tipo no estructurado y la gran opción de procesamiento de datos convencional como RDBMS es aún más difícil, requiere mucho tiempo y es costosa. Pero la programación MapReduce de Hadoop es mucho más efectiva, segura y rápida en el procesamiento de grandes conjuntos de datos, incluso de terabytes o petabytes.
Artículos recomendados
Esta es una guía de cómo funciona MapReduce. Aquí discutimos las Fases del modelo MapReduce con Beneficios y cómo funciona. También puede echar un vistazo a los siguientes artículos para obtener más información:
- Componentes del ecosistema de Hadoop
- MapReduce Algorithms
- ¿Qué es MapReduce en Hadoop?
- Preguntas de la entrevista de MapReduce