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

Un clúster de Storm es superficialmente similar a un clúster de Hadoop. Considerando que sobre Hadoop se trabaja con “MapReduce” y con Storm se trabaja con “topologías”.
Entre Hadoop y Storm hay la similitud que ambos procesan la carga de forma distribuida y fueron diseñados para distribuir el proceso entre una gran cantidad de máquinas, de esta forma pueden repartir y dividir la carga del trabajo.
Pero Hadoop no fue diseñado para trabajar con los datos en tiempo real sinó para dejar los procesos en batch, mientras se tiene que esperar que el trabajo MapReduce termine antes de cargar los resultados. En cambio Storm si ha estado pensado para trabajar de forma instantánea en tiempo real.
Tened en cuenta que los Sistemas más comparables con Storm no son Hadoop sino soluciones como Esper, Streambase, HStreaming y Yahoo S4. De estos el que más se asemeja es el S4 aunque Storm con comparación a este garantiza el procesamiento de los mensajes. Además vemos que ha salido el proyecto que es un híbrido Storm-Hadoop creado también por Twitter.

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.

Para instalar Storm se puede utilizar GIT y Maven. Además este permite crear fácilmente entornos de desarrollo en un solo nodo de esta forma se puede desarrollar y testear topologías en local. En los siguientes enlaces se explica como instalar Storm con ubuntu, centos, on a single machine y basic installation
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