2015-03-24 121 views
8

我使用kafka_2.9.2-0.8.1.1和zookeeper 3.4.6。删除动物园管理员中的卡夫卡消费者组

是否有一个实用工具可以自动从zookeeper中删除一个用户组?或者我可以删除zookeeper中/ consumers/[group_id]下的所有内容吗?如果是后者,还有什么我失踪&这可以通过现场系统来完成吗?

回答

12

目前,据我所知,删除卡夫卡用户组的唯一方法是手动删除Zookeeper路径/consumers/[group_id]

如果你只是想删除一个使用者群,没有必要担心手动删除Zookeeper路径,但是如果你这样做是为了倒退偏移量,下面的内容将会很有帮助。

首先,您应该在移除Zookeeper路径之前停止属于消费者组的所有消费者。如果你不这样做,那些消费者将不会消费新产生的消息,并且很快会关闭到Zookeeper集群的连接。

当您重新启动使用者时,如果您希望使用者从头开始,请将auto.offset.reset属性设置为smallest。该属性的默认值为largest,这会使重新启动的使用者在最大偏移量之后进行读取,而最大偏移量仅消耗新产生的消息。有关该属性的更多信息,请参阅Kafka 0.8.1文档中的3.2 Consumer Config

仅供参考,在卡夫卡常见问题解答中有一个问题How can I rewind the offset in the consumer?,但它给了我很多帮助。

+0

只是清理错误消费群体或随机控制台消费群体..谢谢! – 2015-03-25 18:31:18

+0

相关:[什么决定卡夫卡消费者抵消?](http://stackoverflow.com/questions/32390265/what-determines-kafka-consumer-offset) – 2016-05-18 16:12:53

+0

注意'auto.offset。在消费者组存在偏移之后,“重置”被忽略,以便如果关闭,他们可以从他们离开的地方取回。这让我感到困惑,但是从开发者那里得到证实。您可以手动删除该组,或者下一次运行,使用“最早”或“最小”标志启动一个新的'group.id'并重新开始。检查出Burrow并且拥有用于删除LinkedIN团队的其他维护和延迟检查的API。 – 2016-07-03 04:54:48

14

从v0.9.0开始,Kafka在/bin附带一套工具,其中一个工具是kafka-consumer-groups.sh工具。这将删除一个用户组。 ./kafka-consumer-groups.sh --zookeeper <zookeeper_url> --delete --group <group-name>

+1

感谢您的输入,但这在v0.8.1.1中不可用(如问题所述)。它在最新版本中提供(0.10.0.0) – 2016-07-05 22:41:09

+0

'tar tvfz kafka_2.9.2-0.8.1.1.tgz | grep消费者| cut -c 49 -' kafka_2.9.2-0.8.1.1/bin/kafka-simple-consumer-shell.sh kafka_2.9.2-0.8.1.1/bin/kafka-console-consumer.sh kafka_2.9.2- 0.8.1.1/bin/kafka-simple-consumer-perf-test.sh kafka_2.9.2-0.8.1.1/bin/kafka-consumer-perf-test.sh kafka_2.9.2-0.8.1.1/bin/windows/kafka-console-consumer.bat kafka_2.9.2-0.8.1.1/config/consumer.properties – 2016-07-05 22:45:52

+2

@ foo-l我知道它不存在0.8。由于kafka更新,我认为这将有助于目前正在寻找问题的人。 – eodgooch 2016-07-06 20:13:15

11

对于新消费者(使用kafka主题管理偏移量而不是动物园管理员),您无法使用kafka的内置工具删除组信息。

这里是试图使用kafka-consumer-groups.sh脚本删除新式的消费群信息的一个例子:

bin/kafka-consumer-groups.sh --bootstrap-server "kafka:9092" --delete --group "indexer" --topic "cleaned-logs" 
Option '[delete]' is only valid with '[zookeeper]'. Note that there's no need to delete group metadata for the new consumer as the group is deleted when the last committed offset for that group expires. 

下面是响应的重要组成部分:

注意,有没有需要删除新消费者的组元数据,因为该组在最后一次提交的偏移量到期时将被删除。

这是从监测的角度讲那种恼人的(特别是通过像burrow跟踪偏移时),因为它意味着,如果你在你的代码改变消费者的组名,你会一直看到旧群体背后直到抵消期满为止。

假设您可以手动为该主题编写一个墓碑(这是在offset expiration期间发生的情况),但我还没有找到任何工具可以使这一切变得简单。