# data[].attributes.body
MapReduce es un modelo de programación para escribir aplicaciones que pueden procesar Big Data en paralelo en múltiples nodos. MapReduce proporciona capacidades analíticas para analizar grandes volúmenes de datos complejos.

El modelo tradicional ciertamente no es adecuado para procesar grandes volúmenes de datos escalables y no puede ser acomodado por servidores de bases de datos estándar. Además, el sistema centralizado crea demasiados cuellos de botella al procesar varios archivos simultáneamente.

Google resolvió este problema de cuello de botella utilizando un algoritmo llamado MapReduce. MapReduce divide una tarea en partes pequeñas y las asigna a muchas computadoras. Más tarde, los resultados se recopilan en un lugar y se integran para formar el conjunto de datos de resultados.

El algoritmo MapReduce contiene dos tareas importantes, a saber, Map y Reduce.

La tarea Map toma un conjunto de datos y lo convierte en otro conjunto de datos, donde los elementos individuales se dividen en tuplas (pares clave-valor).

La tarea Reduce toma la salida del Map como una entrada y combina esas tuplas de datos (pares clave-valor) en un conjunto más pequeño de tuplas.

La tarea de Reduce siempre se realiza después del trabajo de Map.

# data[].attributes.body
El ejemplo más común de una aplicación MapReduce es el Word Count. Consiste en contar las ocurrencias de cada palabra en un conjunto de documentos. El lenguaje principal para programar trabajos Hadoop MapReduce en HDFS es Java.

# data[].attributes.body
Es un framework que proporciona un sistema de procesamiento de datos paralelo y distribuido.
Tiene una arquitectura maestro / esclavo
Función map()
La función map() posee la característica de trabajar sobre grandes volúmenes de datos.
Función reduce ()
La función reduce () se ejecuta para cada elemento de cada lista de valores intermedios que recibe.

# data[].attributes.body
MapReduce es un modelo de programación para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras y al commodity computing. El nombre del framework está inspirado en los nombres de dos importantes métodos, macros o funciones en programación funcional: Map y Reduce. MapReduce ha sido adoptado mundialmente, ya que existe una implementación OpenSource denominada Hadoop. Su desarrollo fue liderado inicialmente por Yahoo y actualmente lo realiza el proyecto Apache. Desde la década de los años 2010 existen diversas iniciativas similares a Hadoop tanto en la industria como en el ámbito académico. Se han escrito implementaciones de bibliotecas de MapReduce en diversos lenguajes de programación como C++, Java y Python.

# data[].attributes.body
Hadoop MapReduce es un paradigma de procesamiento de datos caracterizado por dividirse en dos fases o pasos diferenciados: Map y Reduce. Estos subprocesos asociados a la tarea se ejecutan de manera distribuida, en diferentes nodos de procesamiento o esclavos. Para controlar y gestionar su ejecución, existe un proceso Master o Job Tracker. También es el encargado de aceptar los nuevos trabajos enviados al sistema por los clientes.

# data[].attributes.body
Lo que hace es un procesamiento concurrente dividiendo la información en pequeñas partes las cuales se procesan en paralelo en servidores Hadoop.

# data[].attributes.body
ventajas del modelo MapReduce

Escalabilidad; las organizaciones pueden procesar petabytes de datos almacenados en el Sistema de Archivos Distribuidos de Hadoop (HDFS).

Flexibilidad; el entorno de Hadoop facilita el acceso a múltiples fuentes de datos y a diversos tipos de datos.

Velocidad; con el procesamiento en paralelo y el mínimo movimiento de datos, este modelo ofrece un rápido procesamiento de cantidades masivas de datos.

Facilidad; los desarrolladores pueden escribir el código en varios lenguajes, como Java, C++ y Python.

# data[].attributes.body
MapReduce es un modelo de programación que se ejecuta sobre Hadoop, un motor de análisis de datos ampliamente utilizado para Big Data. Programa aplicaciones que se ejecutan en paralelo para procesar grandes volúmenes de datos almacenados en clústeres.

¿CÓMO FUNCIONA MAPREDUCE?
La forma en que funciona MapReduce se puede dividir en tres fases, con una cuarta fase como opción.

Mapper/Mapeador: en esta primera fase, la lógica condicional filtra los datos en todos los nodos en pares de valores clave. La "clave" se refiere a la dirección de desplazamiento para cada registro, y el "valor" contiene todo el contenido del registro.
Shuffle/Barrajar: durante la segunda fase, los valores de salida del mapeo se ordenan y consolidan. Los valores se agrupan según claves similares y los valores duplicados se descartan. La salida de la fase aleatoria también se organiza en pares clave-valor, pero esta vez los valores indican un rango en lugar del contenido de un registro.
Reducer/Reductor: en la tercera fase, se agrega la salida de la fase Shuffle consolidada, con todos los valores agregados a sus claves correspondientes. Esto luego se combina en un solo directorio de salida.
Combiner/Combinador: ejecutar esta fase puede optimizar el rendimiento del trabajo de MapReduce, haciendo que los trabajos fluyan más rápidamente. Lo hace tomando las salidas del mapeador y examinándolas a nivel de nodo en busca de duplicados, que se combinan en un solo par k-v, lo que reduce el trabajo que debe completar la fase de reproducción aleatoria.

# data[].attributes.body
•En el mundo del Big Data existe un concepto muy importante conocido como “Map Reduce”. Se le solicita a los estudiantes puedan investigar sobre la temática y ámbitos de aplicación.