MapReduce

Apache MapReduce es un proyecto de código abierto diseñado para generar y almacenar grandes conjuntos de datos. El sistema MapReduce se ejecuta en un sistema informático en clúster. El procesamiento consta de dos fases. La fase mapper procesa los datos de entrada que se transforman en pares clave-valor. La salida del proceso mapper alimenta posteriormente al proceso reducer, que comprime sus registros de entrada.
¿Por qué es importante MapReduce?
Si necesita un procesamiento rápido y económico de petabytes de datos, necesita MapReduce y Hadoop. Hoy en día, Hadoop es casi sinónimo de uso de Big Data porque permite a las organizaciones emplear miles de procesadores básicos para procesar grandes conjuntos de datos.
MapReduce evolucionó a partir de la necesidad de los sistemas de manejar de forma eficiente conjuntos de datos que pudieran escalar hasta el rango de los petabytes. Los datos se presentan en muchos formatos que deben procesarse, almacenarse y recuperarse. El sistema de archivos distribuidos Hadoop (HDFS) utiliza MapReduce como componente central de su arquitectura para procesar una gran variedad de datos de forma escalable y flexible.
MapReduce puede invocarse en lenguajes populares, como Python, C++ y Java.
Realización de una operación MapReduce
Realizar un MapReduce sobre un conjunto de datos requiere utilizar dos métodos principales: la interfaz Mapper y la interfaz Reducer.
El mapeador
Las tareas que transforman los registros de entrada en registros intermedios se conocen como Mapas. Un par de entrada puede asignarse a cero o más salidas (registros intermedios), que pueden ser un tipo de datos del par de valores de entrada. El proceso de Mapa puede ejecutarse en paralelo con una tarea de trabajador por cada archivo de datos de entrada, de modo que si un conjunto de datos se divide en diez archivos separados, se crearán diez tareas de mapa.
Las aplicaciones pueden utilizar un Contador incorporado para obtener estadísticas sobre la operación. La salida se puede agrupar, ordenar y particionar antes de pasarla a las tareas Reducer. Habrá una tarea Reducer por partición a menos que el desarrollador decida hacer alguna agregación utilizando un combinador para controlar el volumen de datos en esta etapa.
Los registros de salida intermedios y ordenados tienen un formato (clave-len, clave, valor-len, valor). Las aplicaciones pueden especificar un códec de compresión en la configuración.
Paralelización de las tareas de mapa
El número de tareas Map paralelas se rige por el número total de bloques de archivos y el número de trabajadores por nodo, que puede ascender a miles para un archivo de varios terabytes.
El método Reduce
Los valores intermedios producidos por el método Mapper pueden ejecutarse a través del método Reducer, que crea un número menor de valores que comparten una clave. El número de trabajos Reducer es configurable.
El método Reducer utiliza una serie de pasos que comienzan con una barajada y una ordenación, que se producen simultáneamente, seguidas del paso de reducción.
El paso Shuffle implica que el marco de trabajo obtiene un flujo de salida Mapper dado para el trabajo Reducer. En el paso Ordenar, el marco agrupa la salida del Mapeador por valor clave. Las clasificaciones de claves secundarias son configurables.
The Reduce method is called for every <key, (list of values)> pair in the grouped inputs, which is eventually written to the file system in an unsorted form.
La salida del Reductor no está ordenada. La reducción puede hacerse opcional estableciendo el número de tareas en Cero.
Particionamiento
Las salidas intermedias del mapa pueden particionarse mediante una función hash que utiliza una parte del valor de la clave. El número de particiones dicta el número de tareas reducidas.
Tanto el Mapeador como el Reductor pueden utilizar la función Contador para informar de las estadísticas.
Ventajas de MapReduce
A continuación se resumen las principales ventajas de MapReduce:
- Una forma altamente escalable de comprimir grandes volúmenes de datos.
- Ofrece economía de código abierto.
- Admite múltiples formatos de datos.
- La biblioteca MapReduce forma parte de la distribución estándar de Apache Hadoop.
- Fácil de usar para los desarrolladores.
Actian Data Platform y Hadoop
Actian Data Platform está diseñada para escalar en un entorno Hadoop, permitiendo el paralelismo entre nodos y el acceso a todos los formatos de datos compatibles con Apache Spark. El soporte de Hadoop es la clave para soportar operaciones escalables a través de un clúster utilizando datos particionados a los que se accede utilizando Apache Spark. Actian también proporciona acceso escalable a fuentes de datos en streaming como Azure Blob Storage o GCS.