Este documento presenta una introducción a los conceptos clave de analítica y toma de decisiones en tiempo real sobre plataformas Big Data. Cubre temas como frameworks de mensajería (Kafka, RabbitMQ, ActiveMQ), herramientas de ingestión (Flume, Nifi, Kafka Connect), frameworks de procesamiento de streams (Spark Streaming, Flink, Storm, Kafka Streams), plataformas Big Data (Amazon, Google Cloud, Azure) y seguridad. El documento también incluye una demostración práctica.
Los beneficios de migrar sus cargas de trabajo de big data a AWS
Big Data analítica streaming
1. Analítica y toma de
decisiones en tiempo
real sobre plataformas
Big Data
2. José Carlos García Serrano
Líder técnico en Stratio.
Nací en Granada y estudié informática en la ETSII, hice
un master en Big Data y me certifiqué en Spark y AWS.
def fanBoy(): Seq[Skills] = {
val functional = Seq(Scala, Akka)
val processing = Seq(Spark)
val noSql = Seq(MongoDB, Cassandra)
functional ++ processing ++ noSql
}
def aLongTimeAgo(): Seq[Skills] = {
val programming = Seq(Delphi, C++)
val processing = Seq(Hadoop)
val sql = Seq(Interbase, FireBird)
programming ++ processing ++ sql
}
17. Messaging frameworks
RabbitMQ
● Alto rendimiento
● Alta disponibilidad
● Mensajes persistentes
● Integrado con múltiples lenguajes de programación
● Envío asíncrono o síncrono
● Escalable
● Permite la creación de complejas topologías
● Bien empaquetado
● Seguridad: TLS y LDAP
19. Messaging frameworks
Apache Kafka
● Mejor rendimiento que los demás
● Alta disponibilidad
● Persistencia configurable
● Integrado con múltiples lenguajes de programación
● Envío asíncrono o síncrono
● Escalable
● Integrado con los frameworks de procesamiento
● Múltiples consumidores sobre el mismo topic
● Seguridad: TLS
25. “
La elección de una correcta
herramienta de ingestión puede
determinar el tiempo de latencia
global
26. Ingestion Tools
Apache Flume
● Buena latencia
● Permite enrutado y creación de topologías
● Estable
● Distribuido y escalable
● Fault tolerance
● Integrado con la mayoría de frameworks
● Seguridad: Kerberos
28. Ingestion Tools
Apache Nifi
● Data pipelines visuales
● Backpressure
● Distribuido y escalable
● Fault tolerance
● Permite monitorizar cada paso
● Baja latencia y alto throughput
● Permite modo cluster o single node
● Security: TLS, Kerberos, LDAP...
31. Ingestion Tools
Kafka Connect
● Integrado en el Stack de Kafka
● Escalable y distribuido
● Fácil de implementar en Java y Scala
● Permite modo cluster o single node
● Integrado con las principales fuentes de datos (files y BBDD)
● Fault tolerance
● Seguridad: TLS
37. Stream processing frameworks
Apache Storm
● Estabilidad
● Rapidez
● Evento a evento
● Agnóstico al lenguaje de programación
● Integrado con otras herramientas
● Escalable horizontalmente
● Fault tolerance
● Disponible en las plataformas Big Data
40. Stream processing frameworks
Apache Kafka Streams
● Integradas operaciones básicas de streams (map, flatMap, filter ...)
● Simplicidad y velocidad en ETLs
● Permite creación de topologías entre topics con procesamiento
● Java y Scala API
● Operaciones de ventana
● SQL sobre streaming con KSQL
● JOINS entre streams
● Escalable y distribuido
● Fault tolerance
● Disponible en las plataformas Big Data (solo parte open source) y en Confluent
Enterprise
42. Pobre con operaciones
stateful, agregaciones y SQL.
No CEP...
Quizás esté lejos de sus competidores, pero para ETLs
que no requieren estado es una gran elección
43. Stream processing frameworks
Apache Flink
● Alto rendimiento (Incluye optimizador de memoria y SQL y un scheduler)
● Procesamiento evento a evento
● Scala y Java API
● Operaciones de ventana
● Operaciones stateful (agregaciones)
● SQL sobre streaming y batch
● JOINS entre streams
● CEP
● Escalable y distribuido
● Fault tolerance
● Integrado con Mesos y YARN
49. Falta madurez, pobre en ML,
rendimiento SQL y
agregaciones continuas …
Quizás esté lejos de Spark, para streaming y CEP es
una gran elección
50. Stream processing frameworks
Apache Spark
● Estabilidad
● Rapidez con Structured Streaming o Batch
● Streaming continuo o por micro batch (ventana)
● API en Java, Scala, Python y R
● Machine Learning en Batch y Streaming
● Escalable y distribuido
● Fault tolerance
● Integrado con Mesos, YARN y Kubernetes.
● Integrado con las Cloud
51. Una API de Streaming para
gobernarlos a todos
Spark Core + Spark SQL + Spark Streaming =
Spark Structured Streaming
53. Stream processing frameworks
Principales características de Streaming
● Integrado en la API de SQL
● Fácil de usar
● Garantía ‘exactly one’
● Queries interactivas
● Joins static data y streams
● Agregaciones continuas
● Borrado de duplicados
● Operaciones Stateful
● Baja latencia (<1ms)
54. Stream processing frameworks
Ejemplo de agregación por ventana
val words : DataFrame = …..
words.groupBy(
window(
timeColumn = $"timestamp",
windowDuration = "10 minutes",
slideDuration = "5 minutes"
),$"word"
).count()
6 líneas de código en Scala!!!
67. Seguridad
La seguridad en Big Data es un gran reto
ADMINISTRATION
AUTHENTICATION
AUTHORIZATION AUDIT
DATA PROTECTION
IT SECURITY
LINEAGE
SINGLE SIGN ON
68. Seguridad
¿Qué necesitamos?
● Integrar los frameworks y microservicios con Kerberos-TLS…
● Securizar las BBDD NoSql
● Single sign on
● Gestión de usuarios LDAP-Active Directory …
● Gestión de perfiles, ACLs y roles.
● Aislamiento de redes para comunicación entre servicios
● Gestión de secretos
● Autorización y autenticación (usuarios y dinámica de servicios)
● Impersonación