Free tools Windows power users keep installed
One-click scans. No signup required.
You can run Apache Storm on Amazon EKS by writing your own Kubernetes manifests, or a private Helm chart, around Storm’s three moving parts: ZooKeeper, Nimbus and Supervisors. This article does not claim a tested, copy-and-paste install. It separates what Apache and AWS document from the decisions you have to make yourself, and it gives you a checklist for making them. Chart status is also unverified: we could not confirm whether Apache or the community publishes a Storm chart, so treat “no official chart” as a working assumption and check current Apache and chart-registry listings before you start.
What is and isn’t established
Apache describes Storm as “a free and open source distributed realtime computation system” for unbounded data streams. Its homepage lists real-time analytics, online machine learning, continuous computation, distributed RPC and ETL as use cases.
As an Amazon Associate I earn from qualifying purchases.
- Documented: Storm’s cluster roles, its mandatory configuration keys, its fail-fast daemon model, the non-root and no-persistence behavior of the Docker image, and AWS’s prerequisites for Helm on EKS.
- Not documented by those sources: any Kubernetes manifest layout for Storm, recommended PersistentVolumeClaim sizes, probes, pod disruption settings, or a production-readiness claim. The mapping below is design guidance for you to validate, not Apache or AWS guidance.
Storm’s cluster shape
The Storm 2.6.4 cluster setup guide describes three roles:
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →- ZooKeeper is the coordination service. It is not used for Storm message passing.
- Nimbus is the master daemon.
- Supervisors are worker daemons that manage worker processes on each machine.
The guide’s sequence is: set up ZooKeeper, install dependencies and the Storm release on Nimbus and worker machines, fill in storm.yaml, then launch the daemons under supervision. That is a VM-oriented procedure. On Kubernetes you keep the roles but replace the steps with workload resources.
#1 Best Overall
Mapping Storm roles to Kubernetes decisions
Each row is a decision you must make and document. None of the answers are prescribed by the Storm or AWS pages.
| Storm role | Question to answer | Why it matters |
|---|---|---|
| ZooKeeper | Run it outside the cluster or inside EKS? Who operates and backs it up? | Every Storm daemon reaches it through storm.zookeeper.servers, so its addresses must be stable and resolvable. |
| Nimbus | How many replicas, and how are they addressed? | nimbus.seeds is mandatory; workers use it to find topology jars and configuration. Topology-submission clients also need a route to Nimbus. |
| Supervisor | How are worker slots sized and exposed? | supervisor.slots.ports sets the worker ports available on a worker machine, so your container ports and any network policy must agree with it. |
| Storm UI | Expose it at all, and to whom? | Exposure is a security choice. The sources do not cover it. |
Configuration checklist
The 2.6.4 guide names three mandatory settings. Its detail is for that release. The Storm homepage, checked on 2026-10-05, lists Storm 3.1.0 (released 2026-09-12), 3.0.0 and 2.8.9 (both released 2026-07-22) as current. Confirm the matching release documentation, including Java and Python requirements, before applying 2.6.4 details to a newer line.
storm.zookeeper.servers: the ZooKeeper hosts. In Kubernetes this will usually be a set of DNS names, which you must keep stable.storm.local.dir: a local directory for daemon state. Decide whether it is ephemeral or on a volume (see below).nimbus.seeds: the Nimbus addresses that workers use to find topology jars and configuration.supervisor.slots.ports: worker ports on each Supervisor.
Mount your storm.yaml deliberately, for example from a ConfigMap, and verify that the image reads it from the location you expect. That path is image-specific, so check the image documentation rather than assuming.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesPersistence and file permissions
The Apache Storm Docker Official Image documentation says data are not persisted by default and that the process runs as the non-root storm user. It identifies /data and /logs as directories owned by that user, and warns that other paths may cause permission errors.
Rank #3
- Point
storm.local.dirand log paths at locations thestormuser can write, or setstorm.local.dirto a mounted volume you have verified. - If you mount a volume, check its ownership at startup. A volume mounted with root ownership is a common cause of permission errors for non-root images. Pod-level security settings such as
fsGroupare one way to handle it, but test the result with your actual image tag. - The image documentation gives no recommended PersistentVolumeClaim layout, so the volume design is yours to justify.
Restarts, health and high availability
The cluster guide says Storm daemons are fail-fast and should run under supervision, and that Storm recovers after a daemon restarts because state is not held in-process. Kubernetes restarting a crashed container fits that model. It does not by itself deliver application-level high availability. The guide says nothing about probes, StatefulSets or pod policies, so you will need to design and test these yourself:
- Liveness and readiness checks that don’t kill a daemon during normal startup.
- Scheduling spread and disruption budgets for Nimbus and Supervisors.
- ZooKeeper recovery, including what happens to running topologies when it is briefly unavailable.
- Upgrade and rollback order across roles.
EKS and Helm prerequisites
AWS’s Helm on Amazon EKS guide requires working kubectl access to the cluster before you install charts. Its example check is kubectl get svc. It also tells you to confirm that your Helm and Kubernetes versions are compatible. Helm’s Kubernetes distribution guide lists EKS as a supported distribution.
Those pages show that Helm works on EKS. They do not show that a Storm chart exists. If you write your own chart, it is simply a templating layer over the same decisions in the table above. Raw manifests are equally valid.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallDeployment sequence to validate
- Confirm
kubectl get svcsucceeds against the EKS cluster. - Choose a Storm release and read its own setup and configuration pages, including Java and Python requirements.
- Stand up ZooKeeper, either external or in-cluster, and confirm Storm pods can resolve it.
- Deploy Nimbus with
storm.zookeeper.servers,storm.local.dirandnimbus.seedsset and storage permissions verified. - Deploy Supervisors with
supervisor.slots.portsmatching their container ports. - Decide how you submit topologies (from a client with network access to Nimbus, or from a pod inside the cluster) and whether the UI is exposed.
- Kill each daemon pod in turn and confirm recovery before running real workloads.
A note on the performance claim
The Storm homepage says “a benchmark clocked it at over a million tuples processed per second per node.” It names no publisher, year, workload or method, so don’t treat it as a measure of what your EKS node types will deliver. Run your own load test.
Quick Recap
Best Value
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




