Storm

Distributed and fault-tolerant realtime computation

Last reviewed:

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 is simple, can be used with any programming language, and is a lot of fun to use!

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.

Project status (October 2026)

Storm was open-sourced in September 2011. It entered the Apache Incubator in 2013 and became a top-level Apache project in 2014, where development continues as Apache Storm. Major milestones since the releases listed on this site include Storm 1.0 (2016) and Storm 2.0 (2019). For the latest release, see the official Apache Storm downloads page.

Storm history and timeline · Downloads

Diagram of a Storm topology: spouts emit streams of tuples into a network of bolts

Storm integrates with the queueing and database technologies you already use. A Storm topology consumes streams of data and processes those streams in arbitrarily complex ways, repartitioning the streams between each stage of the computation however needed. Read more in the tutorial.

Companies & Projects Using Storm

Groupon Ooyala Taobao Twitter Alibaba The Rubicon Project spider.io Rocket Fuel Quicklizard FullContact 8digits NaviSite IDEXX MercadoLibre and many others (archived list)

Frequently asked questions

What is Storm used for?

Storm processes unbounded streams of data as they arrive. Common uses are realtime analytics, online machine learning, continuous computation, distributed RPC and ETL. Instead of collecting data and processing it later in batches, a Storm topology handles each message within milliseconds of it entering the system.

How is Storm different from Hadoop?

Hadoop MapReduce processes a fixed batch of stored data, and each job finishes when the batch is done. A Storm topology processes data while it is still moving, and it keeps running until you stop it. Storm does for realtime processing what Hadoop did for batch processing, and many teams run both side by side.

How does Storm compare with Spark, Flink and Kafka Streams?

Storm processes each tuple as it arrives and gives at-least-once processing, with exactly-once state updates through its Trident API. Spark processes streams in micro-batches on the same engine as its batch jobs. Flink also processes one event at a time, and builds managed state and exactly-once checkpoints into its core API. Kafka Streams is a library that runs inside your own application and reads from and writes to Kafka. See Storm vs Spark, Storm vs Flink and Storm vs Kafka.

Which programming languages can I use with Storm?

Java, Clojure, Scala and other JVM languages work natively. Topologies are defined with Apache Thrift, so any language can define and submit them, and spouts and bolts can be written in any language through Storm's JSON-based multilang protocol. Adapters exist for Python, Ruby, JavaScript, Perl and PHP.

Is Storm still maintained?

Yes. Storm has been developed by the Apache Software Foundation as Apache Storm since 2013 and has been a top-level Apache project since 2014. Current releases and documentation are on the Apache Storm website. The history and timeline page covers what changed after the releases listed here.

Is Storm free to use?

Yes. Storm is free and open source for both open source and commercial use. It was first released under the Eclipse Public License, and it has been licensed under the Apache License 2.0 since it moved to the Apache Software Foundation.