From the home page
“Storm is a free and open source distributed realtime computation system. Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. […] Storm has many use cases: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. Storm is fast: a benchmark clocked it at over a million tuples processed per second per node. It is scalable, fault-tolerant, guarantees your data will be processed, and is easy to set up and operate.”
Storm enables you to define a Topology (an abstraction of cluster computation) in order to describe how to handle data flow. In a topology you can define some Spouts (entry point for your data with basic preprocessing) and some Bolts (a single step of data manipulation). This simple strategy enable you to define a complex processing of streams of data.
Storm nodes are of two kinds: master and worker. Master node runs Nimbus, it is responsible for distributing code around the cluster, assigning tasks to machines, and monitoring for failures. Worker nodes run Supervisor. The Supervisor listens for work assigned to its machine and starts and stops worker processes as necessary based on what Nimbus has assigned to it. Everything is done through ZooKeeper.
- Repository: https://github.com/nathanmarz/storm
- Home Page: http://storm-project.net/
- Documentation: http://storm-project.net/documentation.html
- RedStorm https://github.com/colinsurprenant/redstorm (Ruby)
- Ruby library: https://github.com/nathanmarz/storm/blob/master/storm-core/src/multilang/rb/storm.rb (Ruby)
- Python library: https://github.com/nathanmarz/storm/blob/master/storm-core/src/multilang/py/storm.py (Python)
- Storm PHP https://github.com/lazyshot/storm-php (PHP)
- ScalaStorm https://github.com/velvia/ScalaStorm (Scala)