Kafka的主题删除机制
命令删除
在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 | 集群一: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.