一、偏移量管理



### --- 偏移量管理

~~~     Kafka 1.0.2,__consumer_offsets主题中保存各个消费组的偏移量。
~~~     早期由zookeeper管理消费组的偏移量。



### --- 查询方法:

~~~     通过原生 kafka 提供的工具脚本进行查询。
~~~     工具脚本的位置与名称为bin/kafka-consumer-groups.sh



二、首先运行脚本,查看帮助:



参数

说明

--all-topics

将所有关联到指定消费组的主题都划归到reset-offsets 操作范围。

--bootstrapserver<String: server to connect to>

必须:(基于消费组的新的消费者): 要连接的服务器地址。

--by-duration <String:duration>

距离当前时间戳的一个时间段。格式:'PnDTnHnMnS'

--command-config <String:command config propertyfile>

指定配置文件,该文件内容传递给Admin Client和消费者。

--delete

传值消费组名称删除整个消费组与所有主题的各个分区偏移量和所有者关系

如: --group g1 --group g2 。

传值消费组名称和单个主题,

仅删除该消费组到指定主题的分区偏移量和所属关系。

如: --group g1 --group g2 --topic t1 。

传值一个主题名称仅删除指定主题与所有消费组分区偏移量以及所属关系

如: --topic t1

注意:消费组的删除仅对基于ZK保存偏移量的消费组有效,

并且要小心使用,仅删除不活跃的消费组。

--describe

描述给定消费组的偏移量差距(有多少消息还没有消费)。

--execute

执行操作。支持的操作: reset-offsets 。

--export

导出操作的结果到CSV文件。支持的操作: reset-offsets 。

--from-file <String: path

to CSV file>

重置偏移量到CSV文件中定义的值。

--group <String: consumer

group>

目标消费组。

--list

列出所有消费组。

--new-consumer

使用新的消费者实现。这是默认值。随后的发行版中会删除这一操作。

--reset-offsets

重置消费组的偏移量。

当前一次操作只支持一个消费组,并且该消费组应该是不活跃的。

有三个操作选项

1. (默认)plan:要重置哪个偏移量。

2. execute:执行reset-offsets 操作。

3. process:配合--export 将操作结果导出到CSV格式。

可以使用如下选项:

--to-datetime

--by-period

--to-earliest

--to-latest

--shift-by

--from-file

--to-current 。

必须选择一个选项使用。要定义操作的范围,使用:

--all-topics

--topic 。

必须选择一个,除非使用--from-file 选项。

--shift-by <Long:number-of-offsets>

重置偏移量n个。n可以是正值,也可以是负值。

--timeout <Long: timeout(ms)>

对某些操作设置超时时间。

如:对于描述指定消费组信息,指定毫秒值的最大等待时间,

以获取正常数据(如刚创建的消费组,或者消费组做了一些更改操作)

默认时间: 5000 

--to-current

重置到当前的偏移量。

--to-datetime <String:datetime>

重置偏移量到指定的时间戳。格式:'YYYY-MMDDTHH:mm:SS.sss'

--to-earliest

重置为最早的偏移量

--to-latest

重置为最新的偏移量

--to-offset <Long:offset>

重置到指定的偏移量。

--topic <String: topic>

指定哪个主题的消费组需要删除,

或者指定哪个主题的消费组需要包含到reset-offsets 操作中。

对于reset-offsets 操作,还可以指定分区: topic1:0,1,2 。

其中0,1,2表示要包含到操作中的分区号。

重置偏移量的操作支持多个主题一起操作。

--zookeeper <String: urls>

必须,它的值,你懂的。--zookeeper node1:2181/myKafka 。



### --- 这里我们先编写一个生产者,消费者的例子:

~~~     我们先启动消费者,再启动生产者, 再通过 bin/kafka-consumer-groups.sh 进行消费偏移量查询,
~~~     # 由于kafka 消费者记录group的消费偏移量有两种方式 :
~~~     kafka 自维护 (新)
~~~     zookpeer 维护 (旧) ,已经逐渐被废弃
~~~     所以 脚本只查看由broker维护的由zookeeper维护的可以将--bootstrap-server 换成--zookeeper 即可。



### --- 查看有那些 group ID 正在进行消费:

~~~     这里面是没有指定 topic,查看的是所有topic消费者的 group.id 的列表。
~~~     重名的 group.id 只会显示一次



[root@hadoop ~]# kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
Note: This will not show information about old Zookeeper-based consumers.

console-consumer-58344
console-consumer-79369
test-consumer-group
console-consumer-62344