Apache Storm is an open-source distributed real-time computing system that’s free and open-source. It makes it easy to process unbounded data streams in a reliable way. It is simple to use and can be used with any programming language. It is written mainly in the Clojure and Java’ programming languages. It makes use of ’Spouts’ and ‘Bolts’ to run application-specific logic.
The most recent stable version is “2.2.0”, which was released in June 2020.
It was originally created by Nathan Marz and the Backtype team. After being acquired by Twitter, it became open-sourced. It is easy to set up, operate, and scaleable. It can process a million tuples per minute per node.
Storm joined the Apache Software Foundation to be an incubator project that delivers high-end applications. Apache Storm has been fulfilling the needs of Big Data Analytics since then.
It has many applications:
Analytics in real-time
Online Machine Learning
Continuous Computation
Distributed RPC
It integrates with Hadoop to maximize throughput and can be used with any programming language. It is easily scalable and ensures that data is processed. It is easy to set up and put into action.
Apache Storm integrates with existing queueing technology and database technology. An Apache Storm topology uses data streams and processes them in arbitrarily complicated ways. It also partitions the streams between stages of computation.
These are some of the major organizations that use Apache Storms:
Twitter- Twitter uses Apache Storm to process its “Publisher Analytics Products.” Every tweet and every click on the Twitter Platform are processed by “Publisher Analytics Products”. Apache Storm is tightly integrated into Twitter’s infrastructure.
NaviSite- Storm is NaviSite’s event log monitoring/Auditing software. Storm will process every log generated by the system. Storm will compare the message with the set of regular expressions and, if there is a match, the message will go to the database.
Wego- Wego is a Singapore-based metasearch engine for travel. The data relating to travel is gathered from many sources around the globe at different times. Storm helps Wego to search real-time data, resolve concurrency issues and determine the best match for the user.
Advantages Apache Storm offers:
Real-time stream processing and operational intelligence are possible.
Storm is extremely fast due to its massive data processing power.
Storm can maintain performance even when under increasing load by adding resources in linear fashion.
Storm refreshes data and responds to end-to-end issues in minutes or seconds, depending on the problem. It has very low latency.
Storm guarantees data processing, even if any cluster’s connected nodes fail to respond or messages are lost.
A topology is a graph of computation.Topologies are created to perform real-time computations on Storm. Each node in this topology contains processing logic. Links between nodes indicate how data should be passed between them.
Storm Cluster:
A Storm cluster is somewhat similar to a Hadoop Cluster. On Hadoop, you can run “MapReduce jobs”, but on Storm, “topologies are run.” A topology processes messages indefinitely until it is killed or until the MapReduce job finishes.
There are two types of nodes in a Storm cluster:
Master nodes are and
Nodes for workers
The master node runs a “Nimbus” daemon that is similar to Hadoop’s “JobTracker.” Nimbus is responsible for distributing code throughout the cluster and assigning tasks to machines. It also monitors for failures.
Each worker node runs the “Supervisor” daemon. The supervisor listens to the work assigned to its machine, and initiates or terminates worker processes based on what Nimbus has given it.
A running topology is composed of many worker processes distributed across multiple computers. Each worker process executes a subset. All communication between Nimbus, Supervisors and Zookeeper clusters takes place through a Zookeeper cluster. The Supervisor daemons and Nimbus are stateless and fail-safe. All state is saved in Zookeeper or on a local disk. This means that even after you kill -9 Nimbus and the Supervisors, they will start over as if nothing had happened.
This design makes storm clusters extremely stable.

It is easy to run a Topology.
All code and dependencies should be packaged into one jar
Execute the following command
‘storm jar all-my-code.jar org.apache.storm.MyTopology arg1 arg2’
This invokes the class org.apache.storm.MyTopology with the arguments ‘arg1’ and ‘arg2’. This class defines the topology and submits the topology to Nimbus. It is the primary function of this class. The storm jar connects with Nimbus and uploads it. This is the easiest way to run it via a JVM-based language.
Topologies can be created using any programming language because Nimbus is a thrift-service.