domingo, 27 de marzo de 2016

6- Apache Hadoop: Fases Map&Reduce

Fase MAP

Es un método java llamado MAP que recibe los bloques de datos que contienen la información. Es aquí donde se extrae la información que va llegando linea a linea de los ficheros de entrada en cada llamada. Estas líneas contienen un par Key/valor.


En el campo Valor se almacena la línea del fichero de entrada. El método MAP se encarga de extraer valores y además  filtrarlos según nos interese (Por ejemplo, extrayendo solo valores numéricos, separando por el token “;” etc)


El método MAP trata cada uno de los pares recibidos y devuelve una lista de pares de salida.


map (input_key, input_value) -> (output_key, output_value) list


Como curiosidad, Hadoop redefine los tipos de java para aumentar el rendimiento.


Un ejemplo de función Map, sería una extracción de datos de un fichero con las temperaturas de cada ciudad de España en varios días, estando estas separadas por “;”.
En la función Map, se separarán las temperaturas por el “;” obteniendo el valor de cada día y se crearían pares (Ciudad, (temperaturas)), donde Ciudad sería la Key y las temperaturas el valor.




Fase shuffle and sort

Una vez ha finalizado la función Map, los datos generados se envían por la red para seguir con la siguiente fase. En este proceso interviene la fase shuffle, donde se ordenan y recogen por key todos los resultados generados en la función Map, se combinan y se genera una lista.


Esta nueva lista de keys se envía a la fase Reduce, y precisamente en este punto surgen cuellos de botella, al tener que pasar una gran cantidad de información entre procesos. Es por esto que es importante comprimir y/o combinar los datos de forma eficiente.




Fase Reduce

Esta fase comienza una vez la fase Map ha finalizado. Los datos intermedios generados en la fase Shuffle, se reciben en el disco local de las máquinas que van a ejecutar las tareas Reduce y se eliminan una vez la fase a terminado.


Siguiendo el ejemplo de las temperaturas, en la fase Reduce, se recibiría la lista de temperaturas de cada ciudad y se calcularía la media, por ejemplo.


Para conversión de formatos de video o para procesado de imágenes, a veces solo es necesario usar la función Map. Esto es posible indicando a Hadoop que no ejecute ninguna instancia de Reduce, ahorrando 2 de las 3 fases del proceso.

Reacciones:

0 comentarios:

Publicar un comentario