This document compares three open-source data stream processing engines: Apache Spark Streaming, Apache Flink, and Apache Storm. It discusses their processing models, characteristics such as fault tolerance and state management, and performance in terms of latency and throughput. Previous benchmarking studies are also summarized that have evaluated these engines, though the document notes more work is needed for cross-industry benchmarking.