kafka0.8.1.1
以及之前版本
都无法使用类似一条命令就彻底删除topic,以前看过网上一些删除命令不过只是在zookeeper注销信息而已,但是实际的日志内容还是保存在kafka log中,因为个人需要所以慢慢琢磨了方法彻底清除topic(ps:kafka0.8.2好像直接支持直接删除,不过现在还是beta版 )。
机器环境如下:
Kafka目录:/usr/local/kafka_2.10-0.8.1.1
日志保存目录log.dirs:/data1/kafka/log/
删除的topic名字:zitest2
1、从zookeerer删除信息:
/usr/local/kafka_2.10-0.8.1.1/bin/kafka-run-class.shkafka.admin.DeleteTopicCommand --zookeeper 10.12.0.91:2181,10.12.0.92:2181,10.12.0.93:2181/kafka--topic zitest2
成功后返回信息:deletion succeeded!
2、JPS查看kill掉QuorumPeerMain和Kafka进程
3、从log.dirs目录删除文件,可以看到多个子目录名字如zitest2-0,zitest2-1…zitest2-n(就是你topic的partition个数)
rm –fr zitest2-0……zitest2-n
4、修改日志目录的recovery-point-offset-checkpoint和replication-offset-checkpoint文件(要小心删除,否则待会kafka不能正常启动起来)
replication-offset-checkpoint格式如下:
0
4(partition总数)
zitest2 0 0
zitest2 3 0
hehe 0 0
hehe 1 0
修改后如下:
0
2(partition总数)
hehe 0 0
hehe 1 0
把含有zitest2行全部去掉,并且把partition总数修改为减去zitest2的partition的剩余数目,同理 recovery-point-offset-checkpoint
也是这样修改。
完成后就可以正常启动zookeeper和kafka。
[root@soda-hbase-kafka kafka_2.12-2.1.0]# ./bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper localhost:2181 --topic test Error: Could not find or load main class kafka.admin.DeleteTopicCommand
这个咋回事呢
额,新版本不支持啦
bin/kafka-topics.sh --zookeeper zk_host:port/chroot --delete --topic my_topic_name
哦哦。。多谢。
[root@soda-hbase-kafka kafka_2.12-2.1.0]# bin/kafka-topics.sh --zookeeper *.*.*.*:2181 --delete --topic test Topic test is marked for deletion. Note: This will have no impact if delete.topic.enable is not set to true.
对了,谢谢