使用Kafka的优点与Spark超过只有Spark

eaf3rand  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(344)

Kafka很常见。很多公司都在使用它。我完全理解Kafka和斯帕克是如何工作的,我对他们都很有经验。我不明白的是用例。你为什么要把Kafka和spark一起使用,而不是仅仅使用spark?
在我看来,kafka的主要用途是作为etl管道中的暂存区域,用于实时(流)数据。
我设想有一个数据源集群,数据最初存储在其中。例如vertica、cassandra、hadoop等。
然后是一个处理集群,它从数据源集群读取数据,并将其写入分布式kafka日志,这基本上是一个临时数据集群。
然后还有另一个处理集群——spark集群,它从kafka读取数据,对数据进行一些转换和聚合,并将数据写入最终目的地。
如果我的想象是正确的,我可以从中间剪掉Kafka,在一个运行在spark集群上的spark程序中,驱动程序将从原始源读取数据,并将其并行处理。把Kafka放在中间有什么好处?
你能给我一个Kafka有用的具体用例吗,而不是一开始就阅读要激发的数据,而不经过Kafka?

oiopk7p5

oiopk7p51#

kafka streams直接解决了流处理中的许多难题:
具有毫秒延迟的一次事件处理(非微批处理)。
状态完整处理,包括分布式连接和聚合。
方便的dsl。
使用类似数据流的模型对无序数据进行窗口处理。
分布式处理和容错与快速故障转移。
无停机滚动部署。
apachespark可以与kafka一起使用来流式传输数据,但是如果您仅仅为了这个新应用程序部署spark集群,那么这无疑是一个很大的复杂性问题。
只有Kafka和你的申请。它还可以在添加应用程序的新示例或现有示例崩溃时平衡处理负载。并维护表的本地状态,帮助从故障中恢复。
那么,你应该用什么呢?
低延迟和易于使用的事件时间支持也适用于kafka流。它是一个相当集中的库,非常适合某些类型的任务。这也是为什么它的一些设计可以如此优化Kafka如何工作。您不需要设置任何特殊的kafka流集群,也没有集群管理器。如果你需要做一个简单的Kafka主题到主题的转换,按键计数元素,用另一个主题的数据丰富一个流,或者运行一个聚合或者只进行实时处理——Kafka流就是为你准备的。
如果事件时间不相关,并且秒范围内的延迟是可以接受的,则spark是首选。它是稳定的,几乎任何类型的系统都可以很容易地集成。此外,每个hadoop发行版都附带了它。此外,用于批处理应用程序的代码也可以用于流式处理应用程序,因为api是相同的。
Kafka可以很容易地处理多个来源在一个主题,但相同的Spark将是复杂的处理。但在Kafka的帮助下,它变得非常简单。
链接参考:https://dzone.com/articles/spark-streaming-vs-kafka-stream-1

相关问题