如果只是用kafka-topics.sh的delete命令删除topic,会有两种情况:
- 如果当前topic没有使用过即没有传输过信息:可以彻底删除
- 如果当前topic有使用过即有过传输过信息:并没有真正删除topic只是把这个topic标记为删除(marked for deletion)
针对第二种情况(以insight-test这个topic为例):
- 先确定kafka的server.properties中的,如果是集群,就需要把每台机上的kafka的值设为true
- 断开所有的消费者和生产者
- 进行删除工作:进入kafka/bin:输入删除命令:(本人是集群,有三台zookeeper)
kafka-topics.sh --delete --zookeeper 192.168.181.120:20000,192.168.181.121:20000,192.168.181.66:20000 --topic insight-test
- 应该会提示:marked for deletion
- 进入zookeeper的目录登录zookeeper客户端
bin/zkCli.sh -server 192.168.181.120:20000
- 删除consumers文件下的消费组id(这里面存放着消费者的offset)(本人的消费组id为insight-import)
rmr /consumers/insight-import
- 查看/config/topics ; /brokers/topics ; /admin/delete_topics 这几个文件夹下是否有需要删除的topic的消费组id,有的话也要删除
完成
查看相关的topic还在不在:
/home/kafka/bin/kafka-topics.sh --list --zookeeper localhost:20000