Kafka Streams 对比 Spark Streaming

Apache Spark

Apache Spark 是一种分布式通用处理系统,可以一次处理 PB 级数据。它主要用于流式传输和处理数据。它分布在数以千计的虚拟服务器中。大型组织使用 Spark 来处理大量数据集。 Apache Spark 允许使用大约 80 个高级运算符更快地构建应用程序。它通过查询优化器、物理执行引擎和 DAG 调度程序获得流式和批处理数据的高性能。因此,它的速度快了一百倍。

Spark Streaming

Apache spark 支持通过 Spark Streaming 流式传输大型数据集。 Spark Streaming 是核心 Spark API 的一部分,它允许用户处理实时数据流。它从不同的数据源获取数据并使用复杂的算法对其进行处理。最后,将处理后的数据推送到实时仪表板、数据库和文件系统。

Kafka Streams

用于处理和分析存储在 Kafka 中的数据的客户端库. Kafka 流使用户能够构建应用程序和微服务。此外,将输出存储在 Kafka 集群中。它对 Kafka 以外的系统没有任何外部依赖。它一次只处理一条记录。

Kafka Streams Vs. Spark Streaming

Kafka Streams vs Spark Streaming

 

参数 Apache Kafka Apache Spark
开发人员 最初由LinkedIn开发。后来捐赠给了Apache软件基金会。 最初由加州大学开发。后来,它被捐赠给了 Apache 软件基金会。
基础设施 它是一个 Java 客户端库。因此,它可以在任何支持 Java 的地方执行。 它在 Spark 堆栈的顶部执行。它可以是独立的 Spark、YARN 或基于容器的。
数据来源 它通过主题和流处理来自 Kafka 本身的数据。 Spark 从各种文件、Kafka、Socket 源等中摄取数据
处理模型 它在事件到达时处理事件。因此,它使用 Event-at-a-time(连续)处理模型。 它具有微批处理模型。它将传入的流分成小批量以供进一步处理。
延迟 它的延迟比 Apache Spark 低 它具有更高的延迟。
ETL 转换 Apache Kafka 不支持。 Spark 支持这种转换。
容错 容错在 Kafka 中很复杂。 在 Spark 中容错很容易。
语言支持 主要支持Java。 支持Java、Scala、R、Python等多种语言。
用例 纽约时报、Zalando、Trivago 等使用 Kafka Streams 来存储和分发数据。 Booking.com、Yelp(广告平台)每天使用 Spark 流处理数百万个广告请求。