Apache Samza vs Apache Storm
Apache Samza
samza.apache.orgApache Storm
storm.apache.orgSide by side
| Figure | Apache Samza | Apache Storm |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Web | — | Yes |
| Windows | — | Yes |
| macOS | — | Yes |
| Linux | Yes | Yes |
| API | Yes | Yes |
| Self-hosted | Yes | Yes |
| Plans published | 1 | 1 |
| Spec score · Streaming Analytics Software | 7.8 (#11) | 8.0 (#8) |
| Spec score · Stream Processing Software | 7.8 (#13) | 8.1 (#9) |
| Spec score · Stream Analytics Software | 7.9 (#14) | 8.1 (#9) |
| Spec score · Big Data Analytics Software | 7.8 (#18) | 8.0 (#15) |
| Deployment | Samza supports deployment on YARN, Kubernetes, or as a standalone library, and its documentation describes running applications across public clouds, containerized environments, and bare-metal hardware. | Storm provides local mode for in-process development and remote mode for submitting topologies to a cluster. |
| Distribution | Samza is distributed as a source artifact and through Maven; the download page says it does not have a binary release at this time. | Apache Storm is available through Maven Central and as an official Docker image on Docker Hub. |
| Integrations | Built-in integrations include Apache Kafka, AWS Kinesis, Azure Event Hubs, Elasticsearch, and Apache Hadoop, and custom sources can also be integrated. | Out-of-the-box integrations include Apache Kafka, HDFS, JDBC databases, JMS, and Redis. |
| Purpose | Apache Samza is a distributed stream-processing framework for building stateful applications that process data in real time from multiple sources. | Apache Storm is a distributed realtime computation system for reliably processing unbounded data streams. |
| Security | The background documentation says Samza works with YARN, which supports Hadoop’s security model, and uses Linux cgroups for resource isolation. | Storm supports pluggable Kerberos/SASL authentication and SimpleACLAuthorizer authorization, both disabled by default. |
| Support | The project directs users to a user mailing list subscribed to by Samza users, contributors, and committers. | Users can get help through the user mailing list at [email protected]. |
Plans
In their own words
Apache Samza
Apache Samza is a free, open-source distributed framework for applications that process data from multiple sources in real time. It supports stateless and stateful workloads, using a scalable, fault-tolerant state store for retained application state. Developers can use the high-level Streams API, lower-level Task API, Samza SQL or an Apache Beam API; Beam support for Python and Go is described as work in progress. Java and Scala applications can embed Samza as a lightweight client library. Built-in integrations include Apache Kafka, AWS Kinesis, Azure Event Hubs, Elasticsearch and Apache Hadoop, with custom sources also supported. Samza runs on YARN, Kubernetes or as a standalone library across public-cloud, containerized and bare-metal environments. Host affinity and incremental checkpointing help recover tasks and their state after failures. Processing is at least once. The project supports SQL processing and event-time windows, and its documentation describes applications with several terabytes of state and thousands of cores. Samza is self-hosted on Linux and distributed as source artifacts and through Maven; there is no binary release at this time.
Apache Storm
Apache Storm is a distributed system for computing over unbounded data streams in real time. It uses spouts, bolts, and topologies to assemble multi-stage computations, supporting realtime analytics, online machine learning, continuous computation, distributed RPC, and ETL. The project describes Storm as scalable and fault-tolerant, with guaranteed data processing, and reports a benchmark above one million tuples per second per node. Integrations include Apache Kafka, HDFS, JDBC databases, JMS, and Redis. Developers can work in local mode in-process or submit topologies to a remote cluster. Storm supports stateful processing and lists JavaScript, Python, Ruby, and C# among supported languages. It is free under Apache License, Version 2.0; source and binary distributions are available, along with Maven Central and an official Docker image. The current release is 3.1.0. Security options include Kerberos/SASL authentication, SimpleACLAuthorizer authorization, and TLS for Thrift RPC and worker messaging; authentication and authorization options are disabled by default.