MÓDULO IV: PROCESAMIENTO DE DATOS EN TIEMPO REAL
Presentación y contextualización
En la corta historia del Big Data existen a día de hoy dos tendencias tecnológicas que conviven y permiten afrontar los problemas de procesamiento de grandes datos de manera diferente.
La primera aproximación fue la de procesar los datos allí donde residen y la encarna el ecosistema Apache Hadoop. Una de las limitaciones de dicha tecnología es que la latencia de procesamiento es grande y los resultados del procesado se tienen en el rango de minutos u horas.
Una aproximación alternativa es procesar los datos en tránsito para que los resultados se obtengan en segundos e incluso en tiempo real. Consiste en procesar flujos de datos o streams para obtener resultados prácticamente inmediatos y poder utilizarlos para toma de decisiones rápidas.
El presente módulo introduce los conceptos de streaming, su utilidad y las soluciones arquitectónicas y tecnológicas que actualmente se usan para procesamiento de grandes datos en vuelo.
Requisitos y/o recomendaciones
El módulo requiere conocimientos básicos de:
- Programación para la implementación de escenarios básicos de procesamiento de streams.
- Manejo de soluciones de virtualización. En el presente módulo se experimentará con herramientas en instalaciones locales. El profesor suministrará un Virtual Appliance compatible con VMWare y VirtualBox con todo lo necesario como parte del material del módulo.
- Manejo de soluciones cloud. Para aquellas herramientas del módulo para las que existan soluciones PaaS o SaaS se usarán soluciones de nube pública.
Competencias que se adquieren
Al término del módulo se deberán alcanzar los siguientes objetivos:
- Diferenciar casos de uso en los que aplica el procesamiento de streams de información.
- Interiorizar el patrón básico de arquitectura para procesamiento de streams, conocido como arquitectura Kappa.
- Reconocer las múltiples soluciones tecnológicas para procesamiento de streams y disponer de criterios para la selección de la más adecuada.
- Implementar pipelines básicos de adquisición y procesamiento de streams con las soluciones tecnológicas apredidas.
Contenidos
En la asignatura se tratarán los siguientes contenidos:
- Introducción a las arquitecturas de procesamiento de streams:
- Conceptos y casos de uso
- Patrones de arquitectura: Arquitectura Kappa
- Componentes tecnológicos para adquisición, transmisión y procesamiento de streams
- Componentes tecnológicos de adquisición y transmisión de eventos:
- Adquisición con Apache Flume
- Adquisición y transmisión con Apache Kafka
- Soluciones en cloud
- Componentes tecnológicos de procesamiento de streams de eventos:
- Procesamiento con Spark Streaming
- Kafka para procesamiento: Kafka Streams y KSQL
- Procesamiento con Apache Storm
- Procesamiento con Apache Flink
- Otras soluciones y soluciones en cloud
- Procesamiento de streams:
- Machine learning en streaming
- Algoritmos aproximados
El presente módulo se impartirá en seis sesiones con el plan de trabajo siguiente.
Sesión 1: Fundamentos de streaming.
- Conceptos.
- Casos de uso.
- Patrones de arquitectura.
- Componentes de arquitectura.
Sesión 2: Adquisición y transmisión de eventos. Flume y Kafka.
- Flujos de adquisición de eventos con Apache Flume.
- Introducción a Apache Kafka.
- Kafka como sistema de mensajería. Publicación y consumición de eventos.
- Kafka como sistema de almacenamiento. Disponibilidad, tolerancia a fallos y particionamiento.
- Adquisición y publicación de eventos con Kafka Connect.
- Alternativas de adquisición y transmisión en cloud.
Sesión 3: Procesamiento de streams de eventos con Spark Streaming.
- Introducción a Spark Streaming. Discretizando streams.
- Receptores. Integración con Kafka.
- Transformaciones. SQL sobre streams.
- Manteniendo estado.
- Structured Streaming.
Sesión 4: Procesamiento de streams de eventos con Apache Storm.
- Introducción a Storm. Conceptos.
- Integración con terceros y Kafka.
- Paralelismo y garantías de procesamiento.
- Introducción a Trident.
Sesión 5: Otras tecnologías de procesamiento de streams de eventos.
- Procesamiento de eventos con Apache Flink.
- Procesamiento con Kafka: Kafka Streams y KSQL.
- Soluciones PaaS y SaaS de procesamiento en cloud.
Sesión 6: Escenarios de procesamiento de streams de eventos.
- Introducción a los algoritmos aproximados.
- Ejemplos de algoritmos aproximados.
- Aprendizaje automático sobre streams.
Bibliografía
- Using Flume: http://shop.oreilly.com/product/0636920030348.do
- Kafka in Action: https://www.manning.com/books/kafka-in-action
- Spark: The Definitive Guide: http://shop.oreilly.com/product/0636920034957.do
- Flink in Action: https://manning-content.s3.amazonaws.com/download/7/5c5664d-ba2d-41b0-bf48-e733601eb3b5/Wadkar_Flink_MEAP_V02_ch1.pdf
- Storm Real-Time Processing Cookbook: https://www.amazon.com/Real-Time-Processing-Cookbook-Quinton-Anderson/dp/1782164421
- Data Streams: Algorithms and Applications: https://www.amazon.com/Data-Streams-Applications-Foundations-Theoretical/dp/193301914X
Recursos de apoyo y Webgrafía
- Flume: https://flume.apache.org/documentation.html
- Kafka: http://kafka.apache.org/documentation.html
- Spark Streaming. https://spark.apache.org/docs/latest/streaming-programming-guide.html
- Flink: https://ci.apache.org/projects/flink/flink-docs-release-1.4/
- Storm: http://storm.apache.org/releases/current/index.html