MapReduce

Este no es un componente de Apache para Big Data, pero es la Base del procesamiento de información en las herramientas de Apache en su mayoría, he mencionado mucho el término MapReduce, pero no he explicado su manera de procesar la información, antes de empezar a programar MapReduce necesitamos saber como funciona esta forma de procesamiento.

La Imagen siguiente que encontré en Internet de describe casi de manera completa el flujo de un MapReduce, a continuación listaré los pasos que debe de seguir un proceso MapReduce.


  1. Input: El Input es la información Inicial.
  2. Spliting: El Spliting es el encargado de dividir el archivo (s) del paso de Input en bloques para que el RecordReader trabaje con ellos.
  3. RecordReader: El RecordReader es la forma en que se leerá un archivo de entrada (Input) usualmente para un archivo de Texto se leen renglones por salto de linea.
  4. Mapping: El Mapping es la parte del proceso donde tiene por entrada un par (key, value) donde usualmente en llave es el offset de bytes en la palabra y el valor es una palabra del archivo de Texto, y como salida devuelve un par del tipo (key, value) donde nosotros definimos que valores devolver.
  5. Combiner: Usualmente llamados de manera burda como "mini reducers" sirve para ejecutar la misma tarea que el reducer, pero de forma local, a lo que solo es sobre la información de cada nodo que se utiliza para realizar el Job.
  6. Shuffling: El Shuffling es la parte del proceso donde se agrupan las llaves del mismo tipo y los valores regresados por el Mapping.
  7. Sort: Esta parte ordena los valores por llave valor que se le pasarán al Reducer el proceso se lleva acabo inmediatamente después del suffling.
  8. Reducing: El Reducing toma los (key,value) agrupados por el shuffling y realiza los procesos programados dentro del proceso Reduce para regresar un valor procesado de la forma (Key, Value).
  9. Final Result: El resultado final es la salida en un archivo de texto del par (llave, valor) del Reducing.
Los pasos anteriores se muestran en la siguiente imagen, a excepción del segundo paso RecordReader. El siguiente esquema de MapReduce en la imagen es el famoso WordCount que es como el famoso "Hola mundo" en programación. Este proceso nos contará la cantidad de veces que aparece una palabra en un texto.

Dentro de este proceso podemos tener un paso extra entre el Mapping y el Suffling podemos encontrar un elemento llamado Combiner, en términos burdos este paso puede definirse como mini-reducers, cuando tenemos un combiner en el proceso, todos los pares ordenados que deje en el output el Mapping se agruparán por nodo y por cada nodo que contenga información del mapping se ejecutará un combiner, que usualmente implementa las mismas acciones que el Reducer, optimizando el proceso para el Reducing.

Como podemos ver, el MapReduce actuaría como un framework de programación, donde tiene un inicio y un final, y aunque se pueden hacer muchas cosas, ¿Qué pasa si queremos hacer procesos intermedios que un Combiner no puede hacer?, aquí es donde entran los DAG, explicados en la entrada de Teoría de YARN.

A manera de conclusión me gustaría decir que la forma de procesamiento llave valor fue muy ingeniosa por parte de los desarrolladores de hadoop, y gracias al poderoso software de hadoop es que podemos hacer procesos paralelizados.


Comentarios

Entradas más populares de este blog

Manejo Apache Hive

Replicación y Formas de Paralelización Apache Hadoop

Asignación de un líder Zookeeper