3. Apache Storm
● Sistema de computación distribuida en tiempo real y tolerante a
fallos.
● Storm hace fácil la tarea de procesar streams de datos
● El procesado hace en tiempo real lo que Hadoop hace en
procesos batch
● Simple, se puede utilizar cualquier lenguaje de programación
● Libre y Open Source (Licencia Apache).
4. Apache Storm
● General: Soporta una variedad de casos de uso posibles.
● Escalabilidad: Simplemente añadiendo nuevas máquinas e incrementado
la configuración de paralelismo de la topología. Primeras implementaciones
1M msg/seg en un cluster 10 máquinas.
● Garantía de no perder datos: A diferencia de otros sistemas como S4,
Storm garantiza que no hay perdida de mensajes.
● Robusto: Los clusters se pueden configurar de forma sencilla.
● Tolerante a fallos: Si existen fallos, storm re-asigna las tareas.
● Agnóstico del lenguaje: Los componentes de storm se pueden definir en
cualquier lenguaje de programación.
5. Casos de uso
● Procesamiento de Streams: Con Storm no es necesario mantener colas
intermedias para realizar el procesamiento de streams.
● Computación continua: Permite enviar datos de forma continua para y por
tanto actualizar y mostrar resultados en tiempo real (Como métricas web).
● Llamadas a procedimientos remotos distribuidos: Permite paralelizar de
forma muy sencilla operaciones costosas de CPU.
6. Componentes Cluster Storm
● En Hadoop se ejecutan M-R Jobs; en Storm se ejecutan topologies. La
principal diferencia es que un job M-R termina y un topologie se ejecuta
indefinidamente.
● Dos tipos de nodos: master node y worker node.
● El master node ejecuta el demonio “Nimbus” (~jobtracker en Hadoop).
● Cada worker node ejecuta un demonio llamado “Supervisor”. El
supervisor escucha trabajos asignados a su máquina y arranca y detiene
procesos worker. Cada proceso worker ejecuta un subconjunto de la
topología.
● Una topología en ejecución consiste en muchos procesos worker a lo largo
de muchas máquinas.
7. Coordinación Cluster Storm
● Una topologie es un grafo de computación. Cada nodo en la topologie
contiene lógica de procesado y enlaces entre nodos para indicar cómo los
datos se deben comunicar.
● Para ejecutar una topología se empaqueta todo el código y sus
dependencias en un jar.
storm jar allmycode.jar backtype.storm.MyTopology arg1 arg2
● Ejecuta la clase bactype.storm.MyTopology con sus argumentos y la envía
al cluster storm.
● Las definiciones de las topologías son estructuras Thrift y como Nimbus es
un servicio Thrift se pueden crear topologías utilizando cualquier lenguaje.
8. Streams
● Es la abstracción principal en Storm. Se trata de una secuencia sin límite de
tuplas.
● Storm proporciona abstracciones para transformar streams.
● Las abstracciones básicas son spouts y bolts. Spouts y bolts tienen
interfaces que hay que implementar para ejecutar la lógica de aplicación
específica.
9. Spout
● El Spout es una fuente de streams en un topology.
● Generalmente leen tuplas de la fuente externa y los emiten en la topología.
● Un spout es una secuencia de streams. Por ejemplo un spout puede leer
tuplas de una queue y emitirlas como stream o bien conectarse a la twitter
API y emitir un stream de tweets
10. Bolt
● Todo el procesamiento del topology se hace en los Bolts. Los Bolts pueden
realizar operaciones de filtrado, funciones, agregados, conexiones con BBDD y
más.
● Un bolt consume cualquier número de streams de entrada, realiza algún
procesado sobre ellos y posiblemente emite nuevos streams.
● Transformaciones de stream complejas como calcular un trending topic de un
stream de tweets requieren múltiples pasos y múltiples bolts.
11. Topologies
● Las redes de Spouts y Bolts se empaquetan en una Topologie. Una
topologie es un grafo donde cada nodo es un Spout o Bolt.
● Enlaces entre nodos indican como se pasan las tuplas.
● Cada nodo en la topología se ejecuta en paralelo.
● En la topología se puede especificar cuanto paralelismo se desea para cada
nodo.
● Todos los nodos de la topología deben ser capaces de ejecutarse de forma
individual.
12. Modelo de datos
● Storm utiliza tuplas como modelo de datos. Una tupla es una lista de valores
con nombre, cada campo en una tupla puede ser un objeto de cualquier
tipo.
● Storm soporta todos los tipos primitivos y se pueden crear nuevos
implementando un serializador.
● Cada nodo en una topology debe declarar los campos de salida para las
tuplas que emite.