Advertisement

Spark在Kafka上的两种连接方式对比分析——接收器模式与直接模式

阅读量:

在知乎 Flink 取代 Spark Streaming 的实战之路中,提到

因此下面对两种方式进行详细说明一下。


Receiver方式

Receivers: 接收器模式是通过Kafka高级Consumer API实现的。与所有接收器类似,在从Kafka接收数据时,默认配置下接收的数据会被存储到Spark Executor的内存中。随后由启动的Spark Streaming作业来处理这些数据流。然而通常情况下,默认配置可能会因为底层组件故障而导致数据丢失(请参阅接收器可靠性相关内容)。若要启用高可靠性功能以确保零数据丢失,则需要启用Spark Streaming中的预写日志机制(即Write Ahead Log功能,在Spark 1.2及以上版本已引入)。该机制会同步地将接收到的所有Kafka数据保存到分布式文件系统(如HDFS)中的预写日志位置上。这样即使底层节点发生故障也能利用预写日志中的数据进行可靠恢复

逐个读取数据块时的数据处理会在执行节点的缓存中存储,并因此增加了对内存资源的占用。

在接收器模式下, 采用Kafka提供的高级API,

全部评论 (0)

还没有任何评论哟~