Storm

Definición de Storm

storm_logoApache Storm es un sistema de computación distribuida en tiempo real de baja latencia y de alta disponibilidad basado en la arquitectura maestro-esclavo.
Storm es ideal para trabajar con datos que necesitan ser analizados en tiempo real donde la latencia es una variable a tener muy en consideración, ejemplo de ello serían los sensores del IoT.

Storm delega en ZooKeeper el mantenimiento del estado de sus instancias.

 

Características

  • Se integra con sistemas de colas como  Kestrel, RabbitMQ/AMQP, Kafka, JMS o Amazon Kinesis y los sistemas de bases de datos.
  • Proporciona un API simple y fácil de usar.
  • Escalable
  • Tolerante a fallos
  • Fácil de configurar e implementar
  • Programable en diferentes lenguajes como: Ruby, Python, Javascript o Perl.
  • Garantiza que una tupla se procese completamente

 

Arquitectura

Storm posee una arquitectura maestro-esclavo:

  • Maestro: llamado Nimbus, se encarga de distribuir el código a través del cluster y de realizar la asignación y monitorización de las tareas en los distintos nodos que componen el cluster.
  • Esclavo: llamado Supervisor, se encarga de recoger y procesar los trabajos que le son asignados en la máquina donde se ejecuta. Los nodos esclavo hacen que se distribuya el trabajo a lo largo del cluster y, en caso de que fallara uno de ellos el maestro lo sabría gracias a Zookeeper y redirigiría las tareas a otro nodo.
  • Zookeeper: es el encargado de coordinar a Nimbus y los Supervisors, para ello almacena el estado de cada uno de ellos en cada momento.

 

Storm está compuesta de tres niveles de abstracción.
  • Spout (caño) se encarga de recoger el flujo de datos de entrada
  • Bolt (rayo) se encarga de procesar o transformar los datos
  • Topology (topología) es similar a un grafo. Cada nodo se encarga de procesar una determinada información y le pasa el testigo al siguiente nodo.
Arquitectura Storm

Arquitectura Storm

Storm posee dos modos de funcionamiento:

  • Modo local es muy útil para probar el código desarrollado ya que corre en una única máquina virtual de Java, este modo simula con hilos de los distintos nodos del cluster.
  • Modo cluster o producción ejecuta la topología en cluster, es decir distribuye y ejecuta nuestro código en las distintas máquinas.

 

Fuente: Web oficial

Otros artículos que pueden ser de interés:

Autor: Diego Calvo