8月28日,2020中国股权投资论坛@佛山即将开幕
06-17
前言:严格来说,删除kafka topic及其数据并不是一个困难的操作。然而,它常常给kafka用户带来很多问题。
项目组之前联系过很多开发者,发现偶尔会出现无法彻底删除Kafka的情况。本文总结了删除kafka主题的多种应用场景,总结了一套删除kafka主题的标准操作方法。
步骤1:如果需要删除的Topic当前正在被程序生产和消费,则需要停止这些生产和消费程序。因为如果程序正在生产或消费该主题,则该主题的偏移量信息将在代理上一致更新。
无法通过kafka delete命令删除topic。同时需要设置auto.create.topics.enable = false,默认设置为true。
如果设置为 true,则在 Produce 或 fetch 中不存在的主题也会自动创建。这会在删除主题时引起许多意想不到的问题。
因此,这一步非常重要。您必须设置auto.create.topics.enable = false,并小心停止所有生产和消费程序。
步骤2:server.properties设置delete.topic.enable=true。如果不设置delete.topic.enable=true,调用kafka的delete命令并不能真正删除topic,而是显示(标记为删除)。
Step3:调用命令删除主题。 : ./bin/kafka-topics --delete --zookeeper [zookeeper server:port] --topic [topic name] 步骤4:删除kafka存储目录(server.properties文件log.dirs配置,默认为“/data /kafka -logs") 相关主题的数据目录。
注意:如果kafka有多个broker,并且每个broker配置了多个数据盘(如/data/kafka-logs、/data1/kafka-logs...),并且topic也有多个分区和副本,则需要扫描所有broker的所有数据盘,删除该topic的所有分区数据。 一般来说,经过上述4个步骤后,主题和主题数据就可以正常删除了。
但如果经过上述四步后仍无法正常删除topic,则需要删除zookeeer中的Kafka存储信息。具体操作如下:(注:以下步骤中,kafka在zk中的节点信息使用默认值,如果您的系统修改了kafka在zk中的节点信息,则需要根据步骤5:找到部署zk的服务器,使用命令:bin/zkCli.sh -server [zookeeper server:port]登录zk shell,然后找到部署zk的目录topic位于:ls /brokers/topics,找到要删除的topic,然后执行命令:rmr /brokers/topics/[topic name],则该topic将被彻底删除。
如果主题被标记为删除,则使用命令 ls /admin/delete_topics 找到要删除的主题,然后执行命令: rmr /admin/delete_topics/[主题名称] 注:网上很多其他文章也有说明需要删除zk上topic的消费节点记录和配置节点记录,例如: rmr /consumers/[consumer-group] rmr /config/topics/[topic name] 其实一般情况下,有无需执行这两个操作。如果有的话,都是操作不当造成的。
例如,步骤1没有执行停止生产和消费程序,步骤2配置不正确。也就是说,一般情况下,只要严格按照step1到step5的步骤操作,就可以正常删除主题。
step6:完成后,调用命令:./bin/kafka-topics.sh --list --zookeeper [zookeeper server:port] 查看kafka当前的topic信息。一般情况下,删除的主题不会再次显示。
但如果删除的topic仍然可以查询到,重启zk和kafka即可。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-18
06-08
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用