El paradigma MapReduce

El paradigma MapReduce se creó en 2003 para permitir el procesamiento de grandes conjuntos de datos de forma masivamente paralela. El objetivo del modelo MapReduce es simplificar el planteamiento de la transformación y el análisis de grandes conjuntos de datos, así como permitir a los desarrolladores centrarse en los algoritmos en lugar de en la gestión de datos. El modelo permite una implementación sencilla de algoritmos de datos paralelos. Existen varias implementaciones de este modelo, incluido el enfoque de Google, programado en C++, y la implementación Hadoop de Apache, programada en Java. Ambas se ejecutan en grandes clusters de hardware básico en un entorno peer-to-peer de no compartir nada.

El modelo MapReduce consta de dos fases: la fase de mapa y la fase de reducción, expresadas por la función de mapa y la función de reducción, respectivamente. Las funciones son especificadas por el programador y están diseñadas para operar con pares clave/valor como entrada y salida. Las claves y los valores pueden ser tipos de datos simples, como un número entero, o más complejos, como una transacción comercial.
Correlación
La función map, también denominada tarea map, procesa un único par clave/valor de entrada y produce un conjunto de pares clave/valor intermedios.
Reducir
La función de reducción, también denominada tarea de reducción, consiste en tomar todos los pares clave/valor producidos en la fase de mapa que comparten la misma clave intermedia y producir cero, uno o más elementos de datos.

Nótese que las funciones map y reduce, no abordan la paralelización y ejecución de los trabajos MapReduce. Esto es responsabilidad del modelo MapReduce, que se encarga automáticamente de la distribución de los datos de entrada, así como de programar y gestionar las tareas map y reduce.