分享

kafka offset讨论问答分享

desehawk 2017-12-14 10:53:20 发表于 问题解答 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 5252

问题1:
sparkStreaming 采用 KafkaUtils.createDirectStream 方式获取kafka 数据后我如何去查看kafka 消费情况,我知道不采用这种方式可以通过命令 bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --group pretreatment-solr --zookeeper IP:2181 --topic topicName

回答1:
采用direct模式,如果默认不保存offset,好想是查询不到消费情况的

问题2:
如果要保存offset 和不保存在程序读取和效率上有什么区别,而且我如果没有保存,下次重启消费组会不会从头开始消费?

回答2:
正常来说direct使用checkpoint就可以记录offset了。只不过没发监控offset消费到哪里,如果只想要获得offset的数据,在spark消费数据后,再另外写一份到zk里面就行了


问题3:
只要这样不记录offset 不会再消费组重启时候去重复消费数据吧

回答3:
消费的时候默认还是会去读checkpoint里面的offset,不会读zk的。除非你手写读取zk的代码


问题4:
但是我代码没有checkpoint这个offset,因为效率问题,把它屏蔽咯

回答4:
那你需要手动指定partition对应的offset了..不然每次都会读取largest位置的offset,largest是offset最大的位置。就是,在关闭消费组和重启消费组之间时间段数据就会丢失


问题5:
之前写的程序咯,现在喊我整理一下就是平时查看和拍错方面的文档,在整理时候发现我原来写的程序给自己一个坑,这儿看不到消费情况。。。

回答5:
最简单的,你每次消费完,额外把offset保存到另一个地方就行...

总结:
kafka不开自动提交的话 offset取决于 auto.offset.reset"   开了的话,取决于 enable.auto.commit"

设置了自动提交offset的话   0.9以后kafka 的 offset会存到__consumer_offsets这个topic里面去,0.9以后offset已经和zk没关系啦。

来自7群:552029443
邢海龙、Only  YOU、QQ小冰等
觉得不错整理分享给大家

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条