2. 1. Introducción
2. Topologías
3. Cluster Storm
4. Flujo de ejecución
5. Uso de lenguajes no JVM
6. Ejemplo
7. Apache Trident
8. Storm Flux
Índice
Apache Storm 2Grupo 08
3. Storm sirve para procesar flujos de datos
Pensado para procesamiento en tiempo real
● Complementa a Spark (procesamiento en batch)
Características:
Introducción
Apache Storm 3Grupo 08
● Tolerante a fallos
● Computación continua
● Soporta distintos lenguajes
● Distribuido
● Escalable
● Confiable
4. Topologías
Apache Storm 4Grupo 08
Se compone de:
● Spouts: recogen la información
y generan las tuplas
● Bolts: procesan las tuplas
(pueden almacenarlas en ficheros y BBDD)
● Streams: Secuencia de tuplas
Similares a un grafo donde:
● Cada nodo procesa la información
● Los datos se transmiten de nodo a nodo
5. Topologías
Apache Storm 5Grupo 08
Según cómo se agrupan los Streams y se reparten a los bolts
tenemos:
● Shuffle grouping - De forma aleatoria
● Fields grouping - Se agrupan por el campo especificado
● All grouping - Se envían a todos los bolts (broadcast)
● Global grouping - Se envían al bolt con id más bajo
● Direct grouping - Se indica a que bolt se envía
● Local grouping - Se envía al propio bolt
● Custom grouping - Permite especificar una agrupación propia
● None grouping - Funciona como el shuffle grouping
7. Existen 2 tipos de nodos según el demonio que ejecutan:
● Master - Nimbus:
○ Distribuye las tareas entre los nodos
● Workers - Supervisor:
○ Ejecuta la porción de la topología asignada
Zookeeper:
● Mantiene los estados de los nodos master y workers
● Coordina nodos y mantiene los datos compartidos
Cluster Storm
Apache Storm 7Grupo 08
8. Componentes de un worker node:
● Worker process: responsable parte de topología
● Executor: ejecuta la parte de topología (dinámico)
● Task: instancia de cada elemento (estático)
Storm UI
● Demonio que permite comprobar en web la topología
Cluster Storm
Apache Storm 8Grupo 08
9. Estructura cluster similar a Spark
Cluster Manager → Zookeeper Cluster de Spark
Driver Program → Nimbus
Storm no usa caché
Cluster Storm vs Cluster Spark
Apache Storm 9Grupo 08
10. 1. Nimbus espera la topología
2. Nimbus procesa la topología y genera las tareas y su orden
3. Nimbus distribuye las tareas a los Supervisor
4. Los Supervisor mandan señal “keep alive” a Nimbus
5. Si un Supervisor muere se reasigna su tarea
6. Si Nimbus muere los Supervisor seguirán con su tarea asignada
7. Los Supervisor completan sus tareas y esperan nuevas
Flujo de ejecución
Apache Storm 10Grupo 08
11. 8. Zookeeper reinicia a los nodos muertos:
a. Siguen sus tareas
b. Storm garantiza
i. Toda tarea se ejecuta al menos una vez
ii. Toda tupla es procesada al menos una vez
9. Una vez la topología es procesada
c. Nimbus espera nueva Topología
d. Supervisors esperan nuevas tareas
Flujo de ejecución
Apache Storm 11Grupo 08
12. Los Bolts y Spouts se pueden implementar en cualquier lenguaje
Usa un protocolo llamado multilang protocol
● Iniciar handshake
○ Crear fichero vacío para informar del pid
● Iniciar bucle
● Leer y escribir tuplas
○ Implementar emitir tuplas, ack o fail
Uso de lenguajes no JVM
Apache Storm 12Grupo 08
13. Mensajes JSON para comunicar Bolts y Spouts
Permite implementar cada uno en un lenguaje distinto
Uso de lenguajes no JVM
Apache Storm 13Grupo 08
STDIN STDOUT
14. Ejemplo - Spout(I)
Apache Storm 14Grupo 08
Ejemplo de un Spout que lee palabras de un archivo
Métodos:
● ack
● close
● fail
15. Ejemplo - Spout(II)
Apache Storm 15Grupo 08
nextTuple - Lee el fichero y emite las tupla
● Es llamado periódicamente
● Tiene que dejar el hilo cuando no esté trabajando
16. Ejemplo - Spout(III)
Apache Storm 16Grupo 08
open
● 1º en ser llamado
declareOutputFields
● Declara el campo
de salida
31. Bibliografía
Apache Storm 31Grupo 08
http://storm.apache.org/releases/current/Multilang-protocol.html
● Uso de lenguajes no JVM (12, 13)
https://www.adictosaltrabajo.com/tutoriales/trident-storm/
http://storm.apache.org/releases/1.0.1/Trident-tutorial.html
● Apache Trident (21, 22)
https://github.com/apache/storm/tree/master/external/flux
http://storm.apache.org/releases/2.0.0-SNAPSHOT/flux.html
● Storm Flux (28, 29)
32. Bibliografía
Apache Storm 32Grupo 08
Wall, L., Extraction, P., Language, R., Os, M., Scripting, P., Shell, U., … Point, T. (2015).
https://www.tutorialspoint.com/apache_storm
● Capítulo 3 → Cluster Storm [6-8]
● Capítulo 4 → Flujo de ejecución (10, 11)
Jain, A., & Nalya, A. (2014). Learning Storm: Create real-time stream processing
applications with Apache Storm.
● Capítulo 1 → Introducción (3)
● Capítulo 2 → Ejemplo [14-20]
● Capítulo 3 → Topologías (4, 5)
● Capítulo 7 → Uso de lenguajes no JVM (12, 13)
33. Bibliografía
Apache Storm 33Grupo 08
Jain, A., & Nalya, A. (2014). Learning Storm: Create real-time stream processing
applications with Apache Storm.
● Capítulo 1 → Introducción y Topologías (3, 4)
● Capítulo 1 y 2 → Cluster Storm (7, 8)
Para saber más… (a parte de los links y libros ya mencionados)
● Anderson, Q. (n.d.). Storm Real-time: Processing Cookbook.
● Goetz, P., & O’Neill, B. (2014). Storm Blueprints: Patterns for Distributed
Real-time Computation.