AdS Google
Skip to content

Qué es MapReduce y para qué sirve


El principal reto de las empresas que utilizan aplicaciones actuales, que recogen infinidad de datos en su ejecución habitual, es su almacenamiento, procesado y análisis. MapReduce es una de las herramientas más utilizadas en Big Data ya que permite agilizar enormemente estas tareas. MapReduce es un paradigma de procesamiento de datos que se caracteriza por su división en dos fases diferenciadas: Map y Reduce. Estos subprocesos se ejecutan de manera distribuida en diferentes nodos de procesamiento.

Aplicación de MapReduce

MapReduce está pensado para ser una solución práctica para algunos problemas. En concreto, para tareas que pueden ser paralelizadas, como problemas que involucran conjuntos de datos de gran tamaño. En este contexto se utiliza el sistema de archivos distribuido HDFS. En su momento hablamos de Hadoop y tanto el sistema de archivos como MapReduce salieron a colación.

AdS Google

La lógica del framework MapReduce es la de una arquitectura master-slave, contando con un servidor maestro (llamado JobTracker) y varios servidores esclavos (los conocidos como TaskTrackers), de los que habrá uno por cada nodo existente en el clúster. El trabajo del JobTracker es hacer de intermediario entre los usuarios y el framework MapReduce: los trabajos se envían a esta entidad, que los pone en una cola de trabajos pendientes y los va ejecutando en orden de llegada. 

Por tanto, JobTracker será encargado de gestionar las tareas y distribuirlas entre los diferentes TaskTrackers, cosa que permite trabajar en paralelo con enorme efectividad y eficiencia. Los TaskTrackers gestionan, a su vez, el flujo de datos entre la fase Map y la fase Reduce.

Map y Reduce, características de cada fase

Como ya mencionamos, este sistema de procesamiento emplea tecnologías de almacenamiento de datos distribuidas como HDFS (Hadoop Distributed File System). Este módulo HDFS es el encargado de almacenar los ficheros divididos en bloques de datos, que servirán para alimentar a los TaskTrackers. Los resultados del procesamiento se pueden almacenar en el mismo sistema de almacenamiento, o bien en un sistema externo.

Función Map

Es la función que se encarga del mapeo. La función Map toma la entrada del disco como pares (clave,valor), los procesa y produce otro conjunto de pares (clave,valor) intermedios como salida.

Después, todos esos pares con la misma clave se agrupan, creando un grupo por cada una de las diferentes claves generadas. Aquí no hay ningún requisito acerca del tipo de datos de entrada y salida (pueden no coincidir). Map se puede realizar en paralelo con un tamaño típico de bloque de 128MB. Como avanzamos anteriormente, las tareas se distribuyen a los nodos TaskTracker.

Por poner un ejemplo, un archivo puede dividirse en X registros que procesar. El framework decidirá si X mapeadores trabajarán en paralelo procesando un registro cada uno, o la mitad de mapeadores pueden encargarse de dos registros cada uno. Esto irá en función del tamaño total de los datos que se deben procesar y, entre otras cosas, de los recursos de computación disponibles.

Función Reduce

Cada grupo generado por la función Map pasa ahora por la función Reduce, que se llama una vez para cada clave única de la salida de la función anterior. Junto a la clave se pasa también la lista de valores asociados para que se pueda realizar la fusión (en caso de ser posible) y reducir el conjunto de valores.

Las fases de MapReduce se pueden resumir así:

  • Fase de asignación, en la que se filtran los datos a través de todos los nodos en pares de valores clave.
  • Reorganización, una fase en la que los valores de salida de la asignación se ordenan y consolidan, agrupándose y descartando duplicados.
  • Reducción, que agrega el resultado de la fase anterior ya consolidado, y se combina todo en un directorio de salida único.
  • Combinar, una fase opcional, en la que se puede optimizar el rendimiento de los trabajos de MapReduce y logra más rapidez. 

Estas fases se llevan a cabo gracias a dos servicios como son el Resource Manager y el Node Manager. Son los encargados de organizar las tareas de asignación y reducción, y también gestionan los componentes de procesamiento paralelo y tolerancia a fallos en todos los trabajos de MapReduce.



Source link

AdS Google