Kafka系列之:删除kafka Topic和元信息

Kafka系列之:删除kafka Topic和元信息

  • 一、kafka 删除topic
  • 二、删除kafka topic在zookeeper中的元信息

一、kafka 删除topic

确定不再使用Kafka中的一个主题,最好的使用方式是将其删除,这样可以释放一些资源,比如磁盘、文件句柄等。Kafka-topics.sh脚本中的delete指令就可以用来删除主题,比如删除一个主题topic-delete:

bin/kafka-topics.sh --zookeeper localhost:2181/kafka --delete --topic topic-delete
Topic topic-delete is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.

在执行完删除命令后会有相关的提示信息,这个提示信息和broker端配置参数delete.topic.enable有关。必须将delete.topic.enable参数配置为true才能够删除主题,这个参数的默认值就是true,如果配置为false,那么删除主题的操作将会被忽略。在实际生产环境中,建议将这个参数的值设置为true。

使用kafka-topic.sh脚本删除主题的行为本质上只是在Zookeeper中的/admin/delete_topics路径下创建一个与待删除主题同名的节点,以此标记该主题为代删除的状态。与创建主题相同的是,真正删除主题的动作也是由Kafka的控制器负责完成的。

二、删除kafka topic在zookeeper中的元信息

可以通过手动的方式来删除主题。

主题中的元数据主要存储在Zookeeper下面两个路径下:

  • /brokers/topics
  • /config/topics

主题中的消息数据存储在log.dir或log.dirs配置的路径下,只需要手动删除这些地方内容即可。

以删除主题topic-delete为例,总共分为3个步骤,第一步和第二步的顺序可以互换:

  • 第一步,删除ZooKeeper中的节点/config/topics/topic-delete
  • 第二步,删除ZooKeeper中的节点/brokers/topic/topic-delete及其子节点
  • 第三步,删除集群中所有主题topic-delete有关的文件

集群中的各个broker节点中执行rm -rf /tmp/kafka-logs/topic-delete*命令来删除与主题topic-delete有关的文件

rm -rf /tmp/kafka-logs/topic-delete*

注意:删除主题是一个不可逆的操作。一旦删除后,与其相关的所有消息数据都会被全部删除,在执行这一操作的时候要谨慎。

你可能感兴趣的:(日常分享专栏,Kafka系列,Topic,元信息)