使用带WAL的接收器的Spark Kafka集成

时间:2017-06-30 12:53:17

标签: hadoop apache-spark apache-kafka spark-streaming

我在Databricks的博客下面阅读

https://databricks.com/blog/2015/03/30/improvements-to-kafka-integration-of-spark-streaming.html

在解释使用带有WAl的接收器的spark kafka集成如何工作的过程时,它说

  

1. Kafka接收器在Spark工作人员/执行人员中不断接收Kafka数据。 这使用了高级消费者API   卡夫卡。

     

2.收到的数据存储在Spark的worker / executor内存以及WAL(在HDFS上复制)中。 Kafka 接收器已更新   只有在数据持续存在之后,Kafka才会抵消Zookeeper   日志。

现在我怀疑高级消费者如何更新zookeeper中的偏移量,因为高级消费者不处理偏移量,它由zookeeper处理。因此,一旦我们使用zookeeper从kafka读取消息,zookeeper就会自动更新偏移量。

1 个答案:

答案 0 :(得分:0)

因此,当消费者从kafka中的特定主题检索数据时,消费者有责任更新zookeeper中的偏移量。因此,当您使用自定义kafka使用者时,它有一个inbuild kafka API(org.apache.kafka.clients.consumer。*会这样做),一旦您收到该特定主题的数据,它就会更新偏移量。

如果基于接收器的方法在spark中使用Kafka的高级API来更新zookeeper中的偏移量。