如何在 kafka 2.1.0 版本中清除或删除主题

NNK*_*NNK 1 apache-kafka

想分享在 2.1.0 版本中清除或删除 kafka 主题的不同方法。我在这里发现了类似的问题Purge Kafka Topic但是,已接受的答案已被弃用,因此它适用于 Kafka 0.8 及以下版本,因此创建了这个带有答案的问题。

这不是一个重复的问题。

NNK*_*NNK 6

默认情况下,Kafka 将消息保留 168 小时,即 7 天。如果您想强制 kafka 清除主题,您可以通过多种方式执行此操作。让我们详细看看每一个。

1.使用kafka-configs.sh命令

暂时将保留策略更改为 1 秒。

kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --add-config retention.ms=1000 --entity-name text_topic
Run Code Online (Sandbox Code Playgroud)

您可以通过运行以下命令来检查保留策略的当前值。

kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --describe --entity-name text_topic
Configs for topic 'text_topic' are retention.ms=1000
Run Code Online (Sandbox Code Playgroud)

等待 1 秒并删除保留策略配置,这会将其设置回默认值。

kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --delete-config retention.ms --entity-name text_topic
Run Code Online (Sandbox Code Playgroud)

2.删除topic重新创建

在我们删除现有主题之前,首先获取当前主题的分区和副本,因为您需要这些来重新创建主题。您可以通过运行该主题的描述来获取此信息

kafka-topics.sh --zookeeper localhost:2181 --describe --topic text_topic

Topic:text_topic        PartitionCount:3        ReplicationFactor:3     Configs:
        Topic: text_topic       Partition: 0    Leader: 0       Replicas: 0     Isr: 0
Run Code Online (Sandbox Code Playgroud)

删除主题。

kafka-topics.sh --zookeeper localhost:2181 --delete --topic text_topic
Run Code Online (Sandbox Code Playgroud)

使用复制和分区详细信息重新创建主题。

kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic text_topic
Run Code Online (Sandbox Code Playgroud)

3.手动删除kafka日志中的数据。

  1. 从所有节点停止zookeeper和kafka。
  2. 清除所有节点的 kafka 日志。kafka 将其日志文件存储在 /tmp/kafka-logs/MyTopic-0 中,其中 /tmp/kafka-logs 由 log.dirattribute 指定
  3. 重启zookeeper和kafka。

希望这可以帮助 !!