Apache Storm: arquitectura de clúster

Uno de los aspectos más destacados de Apache Storm es que es una aplicación distribuida rápida, tolerante a fallas y sin "punto único de falla" (SPOF). Podemos instalar Apache Storm en tantos sistemas como sea necesario para aumentar la capacidad de la aplicación.

Echemos un vistazo a cómo está diseñado el clúster de Apache Storm y su arquitectura interna. El siguiente diagrama muestra el diseño del clúster.

Apache Storm tiene dos tipos de nodos, Nimbus (nodo maestro) y Supervisor(nodo trabajador). Nimbus es el componente central de Apache Storm. El trabajo principal de Nimbus es ejecutar la topología Storm. Nimbus analiza la topología y recopila la tarea a ejecutar. Luego, distribuirá la tarea a un supervisor disponible.

Un supervisor tendrá uno o más procesos de trabajador. El supervisor delegará las tareas a los procesos de los trabajadores. El proceso de trabajo generará tantos ejecutores como sea necesario y ejecutará la tarea. Apache Storm utiliza un sistema de mensajería distribuido interno para la comunicación entre nimbus y supervisores.

Componentes Descripción
Nimbo Nimbus es un nodo maestro del clúster Storm. Todos los demás nodos del clúster se denominanworker nodes. El nodo maestro es responsable de distribuir datos entre todos los nodos trabajadores, asignar tareas a los nodos trabajadores y monitorear fallas.
Supervisor Los nodos que siguen las instrucciones dadas por el nimbus se denominan Supervisores. UNsupervisor tiene múltiples procesos de trabajo y gobierna los procesos de trabajo para completar las tareas asignadas por el nimbus.
Proceso de trabajo Un proceso de trabajo ejecutará tareas relacionadas con una topología específica. Un proceso de trabajo no ejecutará una tarea por sí mismo, sino que creaexecutorsy les pide que realicen una tarea en particular. Un proceso de trabajo tendrá varios ejecutores.
Ejecutor Un ejecutor no es más que un hilo único generado por un proceso de trabajo. Un ejecutor ejecuta una o más tareas, pero solo para un pico o cerrojo específico.
Tarea Una tarea realiza el procesamiento de datos real. Entonces, es un pico o un perno.
Marco de ZooKeeper

Apache ZooKeeper es un servicio utilizado por un clúster (grupo de nodos) para coordinarse entre sí y mantener los datos compartidos con técnicas de sincronización sólidas. Nimbus no tiene estado, por lo que depende de ZooKeeper para monitorear el estado del nodo de trabajo.

ZooKeeper ayuda al supervisor a interactuar con el nimbus. Es responsable de mantener el estado de nimbus y supervisor.

Storm es de naturaleza apátrida. Aunque la naturaleza sin estado tiene sus propias desventajas, en realidad ayuda a Storm a procesar datos en tiempo real de la mejor manera posible y más rápida.

Sin embargo, Storm no es del todo apátrida. Almacena su estado en Apache ZooKeeper. Dado que el estado está disponible en Apache ZooKeeper, un nimbus fallido se puede reiniciar y hacer que funcione desde donde lo dejó. Por lo general, las herramientas de monitoreo de servicios comomonit monitoreará Nimbus y lo reiniciará si hay alguna falla.

Apache Storm también tiene una topología avanzada llamada Trident Topologycon mantenimiento de estado y también proporciona una API de alto nivel como Pig. Discutiremos todas estas características en los próximos capítulos.