MapReduce es la capa de procesamiento de Hadoop. Es un modelo de programación diseñado para procesar grandes volúmenes de datos en paralelo al dividir el trabajo en un conjunto de tareas independientes.

Los programas MapReduce están escritos en un estilo particular influenciado por construcciones de programación funcional, expresiones idiomáticas específicas para procesar listas de datos. Es el corazón de Hadoop . Hadoop es tan poderoso y eficiente debido a la reducción de mapas, ya que aquí se realiza el procesamiento paralelo.
MapReduce – Entendimiento de alto nivel
Map-Reduce divide el trabajo en partes pequeñas, cada una de las cuales se puede hacer en paralelo en el grupo de servidores. Un problema se divide en un gran número de problemas más pequeños, cada uno de los cuales se procesa de forma independiente para dar salidas individuales. Estas salidas individuales se procesan adicionalmente para dar salida final.
Hadoop Map-Reduce es altamente escalable y se puede usar en muchas computadoras. Muchas máquinas pequeñas pueden usarse para procesar trabajos que normalmente no podrían ser procesados por una máquina grande.
Para saber más: Introducción a MapReduce
Después de la introducción aprende el flujo de datos de MapReduce.
MapReduce flujo de ejecución de trabajo –

En Hadoop , MapReduce funciona dividiendo el procesamiento de datos en dos fases: fase de mapa y fase de reducción. El mapa es la primera fase de procesamiento, donde especificamos toda la lógica compleja / reglas de negocio / código costoso. Reducir es la segunda fase de procesamiento, donde especificamos el procesamiento ligero como la agregación / suma.
- MapReduce diagrama de flujo
Ahora veamos el flujo de datos de Hadoop MapReduce con componentes en detalle:
a. Archivos de entrada
Los datos para una tarea de MapReduce se almacenan en archivos de entrada, y los archivos de entrada normalmente residen en HDFS. El formato de estos archivos es arbitrario, mientras que los archivos de registro basados en líneas y el formato binario también se pueden usar.
Consulte esta guía rápida para conocer las características de HDFS en detalle.
Para saber más: MapReduce Job Execution Flow
Una de las partes más complejas de Hadoop MapReduce es Mapper y Reducer. Así que después de la ejecución del trabajo vamos a avanzar hacia Mapper

La tarea del asignador procesa cada registro de entrada y genera un nuevo par de . Los pares pueden ser completamente diferentes del par de entrada. En la tarea del asignador, la salida es la colección completa de todos estos pares . Antes de escribir la salida para cada tarea del asignador, la partición de la salida se realiza sobre la base de la clave y luego se realiza la clasificación. Esta partición especifica que todos los valores de cada clave se agrupan.
El marco MapReduce genera una tarea de mapa para cada InputSplit generado por el InputFormat para el trabajo.
- Proceso de mapeador en Hadoop
La representación física de los bloques se convierte en lógica para el asignador mediante entradas divididas. Para leer el archivo de 100 MB, se requieren dos divisiones de entrada. Se crea una división de entrada para cada bloque y se crean un lector de registros y un asignador para cada división de entrada.
InputSlpits no siempre depende del número de bloques, podemos personalizar el número de divisiones para un archivo en particular configurando la propiedad mapred.max.split.size durante la ejecución del trabajo.
Para saber más consulte el siguiente enlace: Guía Mapper

El reductor procesa la salida del asignador. Después de procesar los datos, produce un nuevo conjunto de salida, que se almacenará en el HDFS.
Reducer toma un conjunto de un par de clave-valor intermedio producido por el asignador como entrada y ejecuta una función de Reducer en cada uno de ellos. Estos datos (clave, valor) se pueden agregar, filtrar y combinar de varias maneras, y requieren un amplio rango de procesamiento. El reductor procesa primero los valores intermedios para una clave particular generada por la función de mapa y luego genera la salida ( cero o más par clave-valor). El mapeo uno a uno se lleva a cabo entre las teclas y los reductores. Los reductores funcionan en paralelo, ya que son independientes entre sí. El usuario decide el número de reductores. Por defecto el número de reductores es 1.
Para saber más: Guía REDUCTOR.
Para más recursos de MapReduce consulte el siguiente enlace:
MapReduce – pares clave-valor
MapReduce – InputFormat
MapReduce – InputSplit
MapReduce – Partitioner
MapReduce – Ordenación aleatoria