StormProject es una alternativa a Hadoop creada por Twitter y liberada el 2011 como Open Source y cada vez más adoptada por muchas compañías del mundo.
Storm permite crear una forma fácil de escribir y escalar cálculos complejos en tiempo real en un clúster de computadoras, garantizando que cada mensaje sea procesado. Este consigue tolerancia a fallos. Además permite crear gran cantidad de topologías con senzilles en un clúster usando casi cualquier lenguaje de programación (Clojure, Java, Ruby, Python, … )
Storm tiene muchos casos de uso: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL y muchos más.
En definitiva es escalable, tiene tolerancia a fallos, garantiza que tus datos sean procesados y fácil de instalar y operar.
Alternativas
Funcionamiento
Storm se integra con tecnologías de gestión de colas y de base de datos que la mayoría ya conocemos y usamos. Una topología de Storm consume flujos de datos y procesa aquellas corrientes en formas arbitrariamente complejas, volviendo a particionar las corrientes entre cada etapa del cálculo.
Para aprender más de su funcionamiento les recomendamos los siguientes enlaces:
· https://github.com/nathanmarz/storm/wiki/Tutorial
· http://www.albertcoronado.com/2013/08/14/storm-framework-para-procesar-grandes-cantidades-de-datos-en-tiempo-real/
· https://blog.twitter.com/2011/storm-coming-more-details-and-plans-release
Básicamente veréis que Storm utiliza una cantidad reducida y simples de primitivas conocidas como: nodo (workers), streams, spouts, bolts, workers y topologías. Con estos elementos, el framework se encargará de repartir el trabajo entre sus diversos recursos.
Rendimiento
Storm es muy rápido, permite procesar millones de mensajes por segundo en un pequeño clúster.
Se ha visto que tiene un rendimiento muy alto ya que puede procesar una gran cantidad de mensajes con una latencia muy baja. Storm puede procesar un millón de mensajes de 100 bytes por segundo en una computadora con Intel 2x E5645@2.4Ghz y 24GB de memoria.
Dependencias tecnológicas para hacer funcionar Storm
Storm se basa en las siguientes tecnologías: Apache Zookeeper, un gestor de colas de mensajes como ZeroMQ, Java, JZMQ (Java Binding for ØMQ), Python 2.6, etc. ZooKeeper es usado para gestionar los distintos componentes del cluster.
Una curiosidad que a nivel Cloud nos encotramos el sub-proyecto que permite arrancar un cluster Storm dentro de Amazon Web Services ( Setting up a Storm cluster y storm-deploy ).
Más información en:
· http://storm-project.net/documentation.html
· Storm Wiki
· https://github.com/nathanmarz/storm/wiki/Creating-a-new-Storm-project
· http://www.infoq.com/news/2011/09/twitter-storm-real-time-hadoop/
· http://www.javaworld.com/article/2078672/open-source-tools/open-source-java-projects–storm.html