如何删除Kafka Consumer Group以重置偏移?

时间:2017-03-02 19:46:24

标签: apache-kafka apache-zookeeper

我想删除Kakfa使用者组,以便在应用程序创建使用者并订阅主题时,可以从主题数据的开头开始。

这是使用当前最新的Confluent Platform 3.1.2的单节点开发vm,它使用Kafka 0.10.1.1。

我尝试了正常的语法:

SELECT JSON_MODIFY(attributes, '$.City', JSON_QUERY(attributes, '$.p6i4'))

我收到错误:

SELECT JSON_MODIFY(
            JSON_MODIFY(attributes, '$.City', JSON_QUERY(attributes, '$.p6i4')),
       '$.p6i4', NULL) 

如果我尝试使用zookeeper变体:

sudo /usr/bin/kafka-consumer-groups --new-consumer --bootstrap-server localhost:9092 --delete --group my_consumer_group

我明白了:

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.

如果我使用“旧”消费者列出,我看不到我的消费者群体(或任何其他消费者群体)

sudo /usr/bin/kafka-consumer-groups --zookeeper localhost:2181 --delete --group my_consumer_group

如果我使用“新”消费者列出,我可以看到我的消费者群体,但显然我无法将其删除:

Delete for group my_consumer_group failed because group does not exist.

5 个答案:

答案 0 :(得分:7)

在Kafka 0.11(或Confluent 3.3)中,您可以重置任何现有使用者组的偏移,而无需删除主题。实际上,您可以将偏移更改为任何绝对偏移值或时间戳或任何相对位置。

这些新功能都添加了--reset-offsets命令行工具上的新kafka-consumer-groups标记。

请参阅KIP-122详细信息https://cwiki.apache.org/confluence/display/KAFKA/KIP-122%3A+Add+Reset+Consumer+Group+Offsets+tooling

答案 1 :(得分:3)

使用Kafka 0.10.2升级到刚刚发布的Confluent Platform 3.2解决了我的根本问题。删除主题时,现在可以正确重置偏移信息。因此,当我创建一个具有相同名称的主题时,消费者从新数据的开头开始。

我仍然无法使用kafka-consumer-groups工具删除新样式的使用者群体,但我的基本问题已经解决。

在Kafka 0.10.2之前,有黑客攻击,但没有解决这个问题的干净方法。

答案 2 :(得分:3)

如果使用Java客户端,则可以先获取开始偏移量。

TopicPartition partition = new TopicPartition("YOUR_TOPIC", YOUR_PARTITION);
Map<TopicPartition, Long> map = consumer.beginningOffsets(Collections.singleton(partition));

消费者用来开始处理的偏移量(如果不是删除消费者群体)。

Long committedOffset = consumer.committed(partition).offset();

现在,如果您认为从committedOffset开始就可以,只需轮询记录。 如果你想要开始偏移,     consumer.seek(partition,map.get(partition));

答案 3 :(得分:2)

这可以通过Kafka 1.1.x完成。从文档中:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --delete --group my-group --group my-other-group

答案 4 :(得分:0)

你也可以在不删除整个消费者组的情况下重置单个主题的偏移量:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group my-group --topic my-topic --reset-offsets --to-earliest --execute