Kafka的主题删除机制

algorain

命令删除

在Kafka中当一个主题不再使用的时候,可以选择将其删除,以此来释放磁盘,文件句柄等资源,删除过程其实很简单,使用kafka-topics.sh脚本中的delete指令就可以。

1
bin/kafka-topics.sh --zookeeper localhost:2181/kafka --delete --topic topic-delete

在删除完毕后,会有相应的提示信息,提示信息与broker端配置参数delete.topic.enable有关,必须将delete.topic.enable参数配置为true才能删除主题,该参数的默认值就是true,如果配置为false,那么删除主题的操作将会被忽略。 如果要删除的主题是Kafka内部主题,那么删除时就会报错,截至Kafka2.0.0,Kafka的内部主题一共有两个,__consumer_offsets,__transaction_state。 使用kafka-topics.sh脚本删除主题的行为本质上只是在zookeeper中的/admin/delete_topics路径下创建一个与待删除主题同名的节点,以此标记该主题为待删除的状态。与创建主题相同的是,真正删除主题的动作也是由Kafka的控制器负责完成的。 我们可以直接通过zookeeper的客户端来删除主题,如使用zkCli.sh命令删除主题

1
create /admin/delete_topics/topic-delete ""

手动删除

我们还可以通过手动的方式来删除主题,主题中的元数据存储在zookeeper中的/brokers/topics和/config/topics路径下,主题中的消息数据存储在log.dir或log.dirs配置的路径下,我们只需要手动删除这些地方的内容即可,总共分三个步骤 第一步,删除zookeeper中的节点/config/topics/topic-delete

1
rmr /config/topics/topic-delete

第二步,删除zookeeper中的节点/brokers/topics/topic-delete及其子节点

1
delete /brokers/topics/topic-delete

第三步,删除集群中所有与主题topic-delete有关的文件

1
2
3
集群一:rm -rf /data/kafka-logs/topic-delete*
集群二:rm -rf /data/kafka-logs/topic-delete*
集群三:rm -rf /data/kafka-logs/topic-delete*

删除主题是不可逆的操作。

  • Title: Kafka的主题删除机制
  • Author: algorain
  • Created at: 2020-09-14 15:45:28
  • Updated at: 2023-05-14 21:39:50
  • Link: http://www.rain1024.com/2020/09/14/kafka的主题删除机制/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments
On this page
Kafka的主题删除机制