赞
踩
确定不再使用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的控制器负责完成的。
可以通过手动的方式来删除主题。
主题中的元数据主要存储在Zookeeper下面两个路径下:
主题中的消息数据存储在log.dir或log.dirs配置的路径下,只需要手动删除这些地方内容即可。
以删除主题topic-delete为例,总共分为3个步骤,第一步和第二步的顺序可以互换:
集群中的各个broker节点中执行rm -rf /tmp/kafka-logs/topic-delete*命令来删除与主题topic-delete有关的文件
rm -rf /tmp/kafka-logs/topic-delete*
注意:删除主题是一个不可逆的操作。一旦删除后,与其相关的所有消息数据都会被全部删除,在执行这一操作的时候要谨慎。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。