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

Posted

技术标签:

【中文标题】kafka 2.1.0 版本中如何清除或删除主题【英文标题】:How to purge or delete a topic in kafka 2.1.0 version 【发布时间】:2019-06-20 09:27:59 【问题描述】:

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

这不是重复的问题。

【问题讨论】:

Purge Kafka Topic的可能重复 没有被接受并不意味着您需要在那里复制答案 【参考方案1】:

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

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

kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --describe --entity-name text_topic
Configs for topic 'text_topic' are retention.ms=1000

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

kafka-configs.sh --zookeeper localhost:2181 --alter --entity-type topics --delete-config retention.ms --entity-name text_topic

2。删除主题并重新创建

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

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

删除主题。

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

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

kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic text_topic

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

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

希望这会有所帮助!!

【讨论】:

以上是关于kafka 2.1.0 版本中如何清除或删除主题的主要内容,如果未能解决你的问题,请参考以下文章

如何清除消息中心主题?

kafka(0.8版本)删除主题(没有在配置文件中配置的情况下)

Kafkacat:如何删除主题或其所有消息?

无法使用镜头 kudu sink 连接器将数据从 kafka 主题插入或更新到 kudu 表

如何在apache kafka中删除主题[重复]

关于删除Kafka主题的困惑