Marcos de procesamiento de Big Data
Los marcos de big data permiten a los programadores procesar conjuntos de datos mucho más grandes que cualquier máquina individual, expresando la computación como flujos de datos paralelos que el tiempo de ejecución distribuye y hace tolerantes a fallos.
Definition
Un marco de procesamiento de big data es un sistema que permite a un programador expresar una computación sobre un conjunto de datos muy grande como operadores de flujo de datos de alto nivel, y que particiona automáticamente los datos, programa la ejecución paralela en un clúster y tolera los fallos de los nodos.
Scope
Este tema cubre el modelo de programación de flujo de datos para el procesamiento de datos a escala de clúster: el paradigma MapReduce y sus limitaciones, los motores de flujo de datos en memoria construidos sobre conjuntos de datos distribuidos resilientes, y el procesamiento unificado por lotes y por flujo con ventanas, semántica de tiempo de evento y garantías de "exactamente una vez". Trata cómo los datos masivos, posiblemente ilimitados, se particionan, procesan en paralelo y recuperan después de fallos.
Core questions
- ¿Cómo se puede expresar y ejecutar en paralelo una computación sobre datos demasiado grandes para una sola máquina?
- ¿Cómo mejoran los motores en memoria y de flujo a MapReduce por lotes?
- ¿Cómo se equilibran la corrección, la latencia y la tolerancia a fallos para flujos ilimitados y fuera de orden?
Key theories
- MapReduce
- MapReduce expresa el procesamiento de datos como un paso de mapeo que transforma los registros en pares clave-valor y un paso de reducción que agrega por clave, con el tiempo de ejecución manejando la paralelización, la mezcla de datos y la reejecución de tareas fallidas.
- Conjuntos de datos distribuidos resilientes
- Los RDD (Resilient Distributed Datasets) proporcionan una abstracción en memoria tolerante a fallos cuya línea de transformaciones deterministas permite que las particiones perdidas se vuelvan a calcular, lo que permite una computación en clúster iterativa e interactiva mucho más rápida que MapReduce basado en disco.
- Flujo de datos unificado por lotes y por flujo
- Los motores modernos tratan el procesamiento por lotes como un caso especial del procesamiento por flujo, utilizando ventanas de tiempo de evento y marcas de agua, además de instantáneas consistentes, para ofrecer resultados "exactamente una vez" sobre datos ilimitados y fuera de orden.
Clinical relevance
Estos marcos procesan los datos detrás de las tuberías de búsqueda, análisis, recomendación y aprendizaje automático, y los motores de flujo impulsan el monitoreo en tiempo real y las aplicaciones basadas en eventos, lo que los convierte en infraestructura central para la computación intensiva en datos.
History
El artículo MapReduce de Google de 2004 (revisado en 2008) estableció el procesamiento de datos a escala de clúster; los conjuntos de datos distribuidos resilientes de Spark (2012) aportaron un procesamiento rápido en memoria e iterativo; y sistemas como Flink y el modelo de flujo de datos (2015) unificaron el procesamiento por lotes y por flujo con fuertes garantías de corrección.
Debates
- Procesamiento por lotes versus por flujo como modelo de procesamiento principal
- El procesamiento por lotes es más simple y fácil de hacer "exactamente una vez", pero añade latencia, mientras que el procesamiento por flujo ofrece baja latencia a costa de una corrección más difícil con datos fuera de orden; los motores unificados argumentan que el procesamiento por flujo puede subsumir al procesamiento por lotes, aunque este último sigue siendo común para grandes trabajos históricos.
Key figures
- Jeffrey Dean
- Sanjay Ghemawat
- Matei Zaharia
- Tyler Akidau
Related topics
Seminal works
- dean2008
- zaharia2012
- akidau2015
Frequently asked questions
- ¿Por qué Spark y sistemas similares reemplazaron a MapReduce para muchas cargas de trabajo?
- MapReduce escribe los resultados intermedios en el disco entre cada paso, lo que es lento para algoritmos iterativos. Las abstracciones en memoria como los conjuntos de datos distribuidos resilientes mantienen los datos en memoria entre pasos y solo vuelven a calcular las particiones perdidas en caso de fallo, lo que proporciona grandes aumentos de velocidad para el análisis iterativo e interactivo.