CARACTERÍSTICAS DEL MAPREDUCE
Después de explorar los componentes de software que representa MapReduce Framework, veremos cada característica de Map and Reduce. Usaremos MapReduce para resolver problemas que se pueden resolver con las operaciones Map y Reduce, estas funciones se definen relacionadas con datos estructurados según el tipo de dupla (clave, valor).
Map
La función Map toma un par (clave, valor) como parámetro y devuelve una lista de pares. Esta función maneja el mapeo y se aplica a cada elemento de entrada, por lo que se conseguirá una lista de pares para cada llamada a la función Map. Luego, todos los pares con la misma clave de todas las listas se agrupan para formar un grupo para cada clave diferente generada.
No es necesario que el tipo de entrada coincida con la salida, y las claves de salida no necesitan ser únicas.
Map (clave1, valor1) –> lista (clave2, valor2)
La operación de Map se realiza en paralelo, el grupo de archivos de entrada se divide en varias tareas denominadas FileSplit, el tamaño de bloque típico es de 128 MB. Las tareas se reparten a los nodos TaskTrackers, que pueden realizar la misma tarea según sea necesario.
Reduce
La función Reduce se emplea en paralelo para cada grupo creado por la función Map. La función Reduce se llama una vez para cada clave única de la salida de la función Map. La lista de todos los valores asociados con esa clave se pasa junto con esta clave, por lo que puede realizar algunas fusiones para crear un conjunto de valores más pequeño.
Reduce (clave2, lista(valor2)) –> lista(valor2)
Cuando se ejecuta la tarea reduce, la entrada se encuentra esparcida en varios archivos a través de los nodos en las tareas de Map. Los datos adquiridos de la fase Map se organizan para que los pares clave-valor sean contiguos (fase de ordenación, sort fase), esto simplifica la operación Reduce ya que el archivo se lee secuencialmente.
Si se ejecuta el modo distribuido estos necesitan ser primero copiados al filesystem local en la fase de copia. En cuanto que todos los datos están disponibles a nivel local se unen a una fase de adición, el archivo se fusiona (merge) de forma ordenada. Finalmente, la salida consistirá en un archivo de salida para cada tarea de reducción ejecutada.
Por lo tanto, N archivos de entrada generará M mapas de tareas para ser ejecutados y cada mapa de tareas generará tantos archivos de salida como tareas Reduce hayan configuradas en el sistema.