邯郸做网站找哪家好,调查问卷wordpress,上海招聘用的最多的网站,外贸网站建设优化前言#xff1a;
删除kafka topic及其数据#xff0c;严格来说并不是很难的操作。但是#xff0c;往往给kafka 使用者带来诸多问题。项目组之前接触过多个开发者#xff0c;发现都会偶然出现无法彻底删除kafka的情况。本文总结多个删除kafka topic的应用场景#xff0c;总…前言
删除kafka topic及其数据严格来说并不是很难的操作。但是往往给kafka 使用者带来诸多问题。项目组之前接触过多个开发者发现都会偶然出现无法彻底删除kafka的情况。本文总结多个删除kafka topic的应用场景总结一套删除kafka topic的标准操作方法。
step1
如果需要被删除topic 此时正在被程序 produce和consume则这些生产和消费程序需要停止。
因为如果有程序正在生产或者消费该topic则该topic的offset信息一致会在broker更新。调用kafka delete命令则无法删除该topic。
同时需要设置 auto.create.topics.enable false默认设置为true。如果设置为true则produce或者fetch 不存在的topic也会自动创建这个topic。这样会给删除topic带来很多意向不到的问题。
所以这一步很重要必须设置auto.create.topics.enable false并认真把生产和消费程序彻底全部停止。
step2
server.properties 设置 delete.topic.enabletrue
如果没有设置 delete.topic.enabletrue则调用kafka 的delete命令无法真正将topic删除而是显示marked for deletion
step3
调用命令删除topic
./bin/kafka-topics --delete --zookeeper 【zookeeper server:port】 --topic 【topic name】
step4
删除kafka存储目录server.properties文件log.dirs配置默认为/data/kafka-logs相关topic的数据目录。
注意如果kafka 有多个 broker且每个broker 配置了多个数据盘比如 /data/kafka-logs,/data1/kafka-logs ...且topic也有多个分区和replica则需要对所有broker的所有数据盘进行扫描删除该topic的所有分区数据。 一般而言经过上面4步就可以正常删除掉topic和topic的数据。但是如果经过上面四步还是无法正常删除topic则需要对kafka在zookeeer的存储信息进行删除。具体操作如下
注意以下步骤里面kafka在zk里面的节点信息是采用默认值如果你的系统修改过kafka在zk里面的节点信息则需要根据系统的实际情况找到准确位置进行操作
step5
找一台部署了zk的服务器使用命令
bin/zkCli.sh -server 【zookeeper server:port】
登录到zk shell然后找到topic所在的目录ls /brokers/topics找到要删除的topic然后执行命令
rmr /brokers/topics/【topic name】
即可此时topic被彻底删除。
如果topic 是被标记为 marked for deletion则通过命令 ls /admin/delete_topics找到要删除的topic然后执行命令
rmr /admin/delete_topics/【topic name】
备注
网络上很多其它文章还说明需要删除topic在zk上面的消费节点记录、配置节点记录比如
rmr /consumers/【consumer-group】
rmr /config/topics/【topic name】
其实正常情况是不需要进行这两个操作的如果需要那都是由于操作不当导致的。比如step1停止生产和消费程序没有做step2没有正确配置。也就是说正常情况下严格按照step1 -- step5 的步骤是一定能够正常删除topic的。
step6
完成之后调用命令
./bin/kafka-topics.sh --list --zookeeper 【zookeeper server:port】
查看现在kafka的topic信息。正常情况下删除的topic就不会再显示。
但是如果还能够查询到删除的topic则重启zk和kafka即可。