On September 6th, we got together at Campus Madrid to learn about Kafka and KSQL. Discover with Antonio Abril, Software Architect at Stratio, how we can use Kafka to process real-time social media data.
Find out more about the event: https://www.stratio.com/blog/events/apache-kafka-and-ksql-in-action/
2. Stratio 2018. Confidential, All Rights Reserved
Presentación
Quién soy?
Antonio Abril Ledesma
aabril@stratio.com
Arquitecto Software en Stratio
Kafka
3. Stratio 2018. Confidential, All Rights Reserved
KafkaINDICE
Introducción1
Arquitectura4
Análisis de tweets en tiempo real2
Características principales3
Demo5
5. Stratio 2018. Confidential, All Rights Reserved
Kafka :
Apache Kafka es un sistema de almacenamiento publicador/subscriptor distribuido, particionado y replicado. Estas características, añadidas a que
es muy rápido en lecturas y escrituras lo convierten en una herramienta excelente para comunicar streams de información que se generan a gran
velocidad y que deben ser gestionados por una o varias aplicaciones.
En este ejemplo vamos a ver como mediante Twitter, podemos crear un sistema de ingestión de datos. Crearemos un productor y consumidor de
topics y mostraremos los datos capturados mediante un microservicio creado con Spring Boot
Introducción Kafka
7. Stratio 2018. Confidential, All Rights Reserved
Análisis de tweets en tiempo real usando kafka y spark
¿Qué es? : Aplicación en tiempo real que nos permite auditar los principales tweets que se estén ejecutando con la plataforma de Twitter.
La api de Twitter provee sólo el 3% de esos Tweets a nivel mundial sin coste
No tiene orden de entrada, es aleatorio por diferentes países
¿Para qué sirve?: Permite medir la actividad en la red social, la interacción con sus seguidores y el comportamiento de la/las comunidades
virtuales. Estos datos se pueden guardar y analizan para mejorar el impacto informativo en la audiencia y resultan de gran utilidad para las
aplicaciones de SEO y de marketing digital.
Cómo funciona y qué utiliza: Spring Boot, Java, Kafka, Spark
Genera un microservicio que utiliza Spark Streaming para analizar hashtags populares de los flujos de datos de Twitter. Los datos provienen de la
fuente de Twitter Streaming API y se envían a Kafka. El servicio consumidor recibe datos de Kafka y luego los procesa en una transmisión mediante
Spark Streaming.
Análisis de Twitter en tiempo real Kafka
10. Stratio 2018. Confidential, All Rights Reserved
Características
Twitter
¿ Para qué utilizarlo ?
-Podemos conseguir información en tiempo real de eventos (conciertos, deportes)
-Conseguir historial de personas o empresas que necesitamos conocer
-Localización de personas o empresas por localización física
¿Qué beneficios nos aporta en comparación con otros competidores?
-Es una de las plataformas más eficaces de medios sociales
-A través de microblogging, permite acceder a las noticias en tiempo real sobre
opiniones y obtener así una retroalimentación directa con los seguidores
Kafka
11. Stratio 2018. Confidential, All Rights Reserved
Características
¿Cómo accedemos a la Api de Twitter?
Desde : https://apps.twitter.com/
Configuración fichero .properties con los datos de Twitter
Creamos los tokens de seguridad :
String appId = “appId”
String appSecret = “appSecret”
String accessToken = “accessToken”
String accessTokenSecret = “accessTokenSecret”
Una vez configurado, ya tenemos acceso al servicio
para obtener la información
Kafka
12. Stratio 2018. Confidential, All Rights Reserved
Características
Kafka:
- Rápido : Un único Broker de Kafka puede manejar cientos de megabytes de
lecturas y escrituras por segundo desde miles de clientes.
- Escalable : Kafka está diseñado para permitir que un solo cluster sirva como el eje
central de datos para una organización grande. Puede ser ampliado elásticamente sin tiempo de inactividad. Los flujos de datos se
dividen y se extiende sobre un cluster de máquinas para permitir que los stream de datos sean más grande que la capacidad de
una máquina
- Duradero : Los mensajes se persisten en disco y se replican dentro del clúster para
evitar la pérdida de datos. Cada Broker puede gestionar terabytes de mensajes sin impacto.
- Distribuido : Kafka cuenta con un diseño de cluster-centric que ofrece durabilidad y
garantías de tolerancia a fallos.
Kafka
13. Stratio 2018. Confidential, All Rights Reserved
Características
Kafka :
- Los sistemas de mensajería tradicional suelen tener 2 modelos : Queues (p2p) y
Topics (Publish-Suscribe)
- En una cola (Queue) cada mensaje va a un consumidor, mientras que en un topic
(PS) se hace broadcast de un mensaje a todos los consumidores.
- Kafka dispone de una funcionalidad que permite contemplar ambos modelos : se
llama Consumer Group
Kafka
14. Stratio 2018. Confidential, All Rights Reserved
Características
Estadísticas :
- Existen diversas métricas de rendimiento, estos son algunos ejemplos :
Se observa como Kafka consume a 22K mensajes/segundo, más de 4 veces más rápido que ActiveMQ y RabbitMQ
Kafka
15. Stratio 2018. Confidential, All Rights Reserved
Características
Spark
Para qué utilizarlo ¿?
-Apache Spark es un sistema de computación en clúster rápido y de
uso general. Proporciona un API de alto nivel en Java, Scala, Python y
R, y un motor optimizado que admite gráficos de ejecución general.
También es compatible con un amplio conjunto de herramientas de
alto nivel que incluyen Spark SQL para SQL y procesamiento de
datos estructurados, MLlib para aprendizaje automático, GraphX
para procesamiento de gráficos y Spark Streaming.
Que beneficios nos aporta en comparación con otros competidores ¿?
-Ofrece unos tiempos de cálculo en memoria mucho más rápidos que cualquier otra plataforma. Almacenamiento de los datos en
la memoria caché hace que las transformaciones que se van produciendo de esos datos también se almacenan en memoria, sin
tener que acceder dentro del disco.
Kafka
17. Stratio 2018. Confidential, All Rights Reserved
Architectura
Productor: mediante la api java de kafka, le indicamos donde esta corriendo kafka y el topic por donde
escribimos los mensajes
Consumidor: creamos el consumidor indicando el host, puerto donde está arrancado el broker,
configuramos los parámetros como el timeout, tamaño del buffer y el identificador del consumidor
Kafka
18. Stratio 2018. Confidential, All Rights Reserved
Architectura
¿Quién utiliza este tipo de arquitectura ?
-Empresas para auditar redes sociales
-Campañas de marketing
-Fuerzas del orden para medir eventos
-Gobiernos para conocer orientación de voto de la población
Kafka
21. Stratio 2018. Confidential, All Rights Reserved
Referencias Architectura
○ Spring for Apache Kafka
○ Spring Social Twitter
○ Spark Overview
○ Apache Kafka Documentation
○ Big Data Processing with Apache Spark - Part 3: Spark Streaming
○ Spring Kafka - Embedded Unit Test Example
Ejemplos de cómo usar con Confluent :
Confluent - Robin Moffat
○ https://www.confluent.io/blog/using-ksql-to-analyse-query-and-transform-data-in-kafka
○ https://github.com/confluentinc/cp-demo
Kafka