Consumer消费Offset查询。
kafka0.9版本以前,消费者的offset信息保存在zookeeper中。从kafka0.9开始,使用了新的消费API,消费者的信息会保存在kafka里面的__consumer_offsets这个topic中,因为频繁操作zookeeper性能不高,所以kafka在自己的topic中负责维护消费者的offset信息。
使用kafka-consumer-groups.sh这个脚本可以查看当前所有的consumer group。
[root@master kafka]# bin/kafka-consumer-groups.sh --list --bootstrap-server master:9092
consumer_group-2
consumer_group-1
具体查看某一个consumer group的信息。 - GROUP:当前消费者组,通过group.id指定的值 - TOPIC:当前消费的topic - PARTITION:消费的分区 - CURRENT-OFFSET:消费者消费到这个分区的offset - LOG-END-OFFSET:当前分区中数据的最大offset,一定大于等于CURRENT-OFFSET - LAG:当前分区未消费数据量
[root@master kafka]# bin/kafka-consumer-groups.sh --describe --bootstrap-server master:9092 --group consumer_group-1
Consumer group 'consumer_group-1' has no active members.
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
consumer_group-1 mytopic1 3 0 0 0 - - -
consumer_group-1 mytopic1 2 0 0 0 - - -
consumer_group-1 mytopic1 1 2 2 0 - - -
consumer_group-1 mytopic1 0 1 1 0 - - -
consumer_group-1 mytopic1 4 3 3 0 - - -
此时再执行一次生产者代码,生产一条数据,重新查看一下这个消费者的offset情况。
[root@master kafka]# bin/kafka-consumer-groups.sh --describe --bootstrap-server master:9092 --group consumer_group-1
Consumer group 'consumer_group-1' has no active members.
GROUP TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID
consumer_group-1 mytopic1 3 0 1 1 - - -
consumer_group-1 mytopic1 2 0 0 0 - - -
consumer_group-1 mytopic1 1 2 2 0 - - -
consumer_group-1 mytopic1 0 1 1 0 - - -
consumer_group-1 mytopic1 4 3 3 0 - - -
我们发现PARTITION 为3的分区里面,有一条未消费的数据。