MAP REDUCE (Tecnologías Big Data p2)
#SLICEofDATA Tu porción diaria de Data Analytics en solo 15 minutos
Venimos de TECNOLOGÍAS BIG DATA (parte1)
¿Qué es MapReduce?
Un framework de procesamiento de datos para grandes problemas que se pueden paralelizar.
Diseñado para grandes conjuntos de datos.
Un problema pequeño será mucho más lento con MapReduce.
Hace uso de grandes clusters o grids (muchos nodos).
Utiliza técnicas de bajo nivel para mejorar el rendimiento, principalmente la localidad de los datos.
Se inspira en la programación funcional map/reduce, pero con diferentes objetivos.
Un poco de Historia:
2003: Google publica sus documentos sobre Google File System (GFS).
2004: Jeffrey Dean y Sanjay Ghemawat (Google) publican su artículo sobre MapReduce.
2006: Doug Cutting y Mike Cafarella (Yahoo) desarrollan Hadoop, basado en MapReduce de Google.
· Marco de trabajo de código abierto para el procesamiento de datos mediante el modelo MapReduce.
· Incluye el sistema de archivos Hadoop (HDFS)
· Donado a la Fundación Apache y distribuido bajo la licencia Apache 2.0
2010: Matei Zahaira desarrolla Spark (inicialmente su tesis doctoral).
2014: Spark se convierte en un proyecto Apache de alto nivel, con más de 1000 contribuyentes en todo el mundo.
Los 5 pasos de MapReduce
Los datos se dividen aleatoriamente y se distribuyen por todo el clúster.
Map: Cada mapper (un nodo trabajador o procesador asignado) ejecuta la función Map() proporcionada por el usuario sobre su bloque de datos asignado. El resultado de cada subproblema es un conjunto de pares clave-valor.
Barajar y ordenar: La salida de Map() se ordena por clave y se redistribuye en el
clúster.
Reduce: Cada reducer (de nuevo, un nodo trabajador o procesador asignado)
ejecuta la función Reduce() proporcionada por el usuario sobre todos los datos asociados a una una sola clave. Se ejecuta un reducer por cada clave generada.
Salida final: La salida de todos los reductores juntos.
Conteo de Palabras
Uno de los ejemplos más típicos de MapReduce es el problema del recuento de palabras problema:
Input: Un texto (muy grande), normalmente simplemente una colección de líneas de texto.
Output deseado: Una lista de todas las palabras presentes en el texto, y el número de veces que aparece cada una en el texto.
¿Cómo podemos hacerlo con MapReduce?
Conteo de Palabras: ¿Cómo funciona?
Map Reduce
Las aplicaciones MapReduce sólo requieren proporcionar la implementación de las funciones Map y Reduce.
Las aplicaciones MapReduce se despliegan sobre un framework MapReduce, que suele ejecutarse en un clúster.
El framework se encarga de todas las operaciones de gestión de datos:
· División de datos
· Barajar y ordenar
· Recogida de resultados
La paralelización es transparente para el programador.
El paradigma MapReduce sacrifica la flexibilidad del diseño a cambio de un fácil y rápido desarrollo de aplicaciones paralelas.
Normalmente las aplicaciones de Mapreduce presentan más de un ciclo
Además de las funciones Map Reduce de cada ciclo, se pueden definir parámetros globales/de ciclo, pero el estado nunca se comparte entre mappers o reducers en la misma etapa.
Ref: MapReduce Tutorial (apache.org)