当前位置:   article > 正文

Kafka的主题删除机制_kafka主题删除后对应的存储会释放吗

kafka主题删除后对应的存储会释放吗

Kafka的主题删除机制

命令删除

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

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

在删除完毕后,会有相应的提示信息,提示信息与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命令删除主题

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

手动删除

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

第一步,删除zookeeper中的节点/config/topics/topic-delete

rmr /config/topics/topic-delete
  • 1

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

delete /brokers/topics/topic-delete
  • 1

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/982057
推荐阅读
相关标签
  

闽ICP备14008679号