Mapa reducido


MapReduce es un modelo de programación y una implementación asociada para procesar y generar grandes conjuntos de datos con un algoritmo distribuido paralelo en un clúster . [1] [2] [3]

Un programa MapReduce se compone de un procedimiento map , que filtra y clasifica (como clasificar a los estudiantes por nombre en colas, una cola para cada nombre), y un método reduce , que realiza una operación de resumen (como contar el número de estudiantes en cada cola, lo que arroja frecuencias de nombres). El "Sistema MapReduce" (también llamado "infraestructura" o "marco") organiza el procesamiento ordenando los servidores distribuidos, ejecutando las diversas tareas en paralelo, administrando todas las comunicaciones y transferencias de datos entre las diversas partes del sistema y proporcionando redundancia . y tolerancia a fallos .

El modelo es una especialización de la estrategia dividir-aplicar-combinar para el análisis de datos. [4] Está inspirado en las funciones map y reduce comúnmente utilizadas en la programación funcional , [5] aunque su propósito en el framework MapReduce no es el mismo que en sus formas originales. [6] Las contribuciones clave del marco MapReduce no son las funciones map y reduce reales (que, por ejemplo, se asemejan al estándar de interfaz de paso de mensajes de 1995 [7] reduce [8] y scatter [9]operaciones), pero la escalabilidad y la tolerancia a fallas logradas para una variedad de aplicaciones mediante la optimización del motor de ejecución [ cita requerida ] . Como tal, una implementación de MapReduce de subproceso único no suele ser más rápida que una implementación tradicional (no MapReduce); cualquier ganancia generalmente solo se ve con implementaciones de subprocesos múltiples en hardware de procesador múltiple. [10] El uso de este modelo es beneficioso solo cuando entran en juego la operación aleatoria distribuida optimizada (que reduce el costo de comunicación de la red) y las características de tolerancia a fallas del marco MapReduce. Optimizar el costo de comunicación es esencial para un buen algoritmo de MapReduce. [11]

Las bibliotecas de MapReduce se han escrito en muchos lenguajes de programación, con diferentes niveles de optimización. Una implementación popular de código abierto que tiene soporte para mezclas distribuidas es parte de Apache Hadoop . El nombre MapReduce originalmente se refería a la tecnología patentada de Google , pero desde entonces se ha generalizado . Para 2014, Google ya no usaba MapReduce como su principal modelo de procesamiento de big data , [12] y el desarrollo en Apache Mahout había pasado a mecanismos más capaces y menos orientados al disco que incorporaban funciones de mapa completo y reducción. [13]

MapReduce es un marco para procesar problemas paralelizables en grandes conjuntos de datos utilizando una gran cantidad de computadoras (nodos), denominados colectivamente clúster (si todos los nodos están en la misma red local y usan hardware similar) o cuadrícula (si los nodos están compartidos a través de sistemas distribuidos geográfica y administrativamente, y usan hardware más heterogéneo). El procesamiento puede ocurrir en datos almacenados en un sistema de archivos (no estructurado) o en una base de datos (estructurada). MapReduce puede aprovechar la localidad de los datos, procesándolos cerca del lugar donde están almacenados para minimizar la sobrecarga de comunicación.