本文概述
Apache Spark
Apache Spark是一个分布式的通用处理系统,可以一次处理PB级数据。它主要用于流传输和处理数据。它分布在数千个虚拟服务器之间。大型组织使用Spark处理大量数据集。 Apache Spark允许使用大约80个高级运算符更快地构建应用程序。通过查询优化器,物理执行引擎和DAG调度程序,它获得了流和批处理数据的高性能。因此,它的速度快了一百倍。
Spark流
Apache spark通过Spark Streaming启用大型数据集的流传输。 Spark Streaming是核心Spark API的一部分,可让用户处理实时数据流。它从不同的数据源获取数据,并使用复杂的算法对其进行处理。最后,将处理后的数据推送到实时仪表板,数据库和文件系统中。
Kafka流
一个客户端库,用于处理和分析存储在Kafka中的数据。 Kafka流使用户能够构建应用程序和微服务。此外,将输出存储在Kafka集群中。除了Kafka之外,它对系统没有任何外部依赖性。它一次只处理一条记录。
Kafka Streams与Spark流
参量 | Apache Kafka | Apache Spark |
---|---|---|
Developers | 最初由LinkedIn开发。后来, 捐赠给Apache Software Foundation。 | 最初在加利福尼亚大学开发。后来, 它被捐赠给了Apache Software Foundation。 |
Infrastructure | 它是一个Java客户端库。因此, 它可以在支持Java的任何地方执行。 | 它在Spark堆栈的顶部执行。它可以是独立的Spark, YARN或基于容器的。 |
Data Sources | 它通过主题和流处理来自Kafka本身的数据。 | Spark从各种文件, Kafka, Socket源等中提取数据。 |
Processing Model | 它在事件到达时对其进行处理。因此, 它使用了一次事件(连续)处理模型。 | 它具有微批量处理模型。它将传入的流分成小批量以进行进一步处理。 |
Latency | 它的延迟比Apache Spark低 | 它具有更高的延迟。 |
ETL Transformation | Apache Kafka不支持它。 | Spark支持此转换。 |
Fault-tolerance | 容错在Kafka很复杂。 | 容错在Spark中很容易。 |
Language Support | 它主要支持Java。 | 它支持多种语言, 例如Java, Scala, R, Python。 |
Use Cases | 纽约时报, Zalando, Trivago等使用Kafka Streams来存储和分发数据。 | Booking.com, Yelp(广告平台)每天使用Spark流处理数百万个广告请求。 |
评论前必须登录!
注册