Java工程师的咖啡

kafka删除topic

2018-07-24  本文已影响0人  码仙丶

删除kafka topic及其数据,严格来说并不是很难的操作。但是,往往给kafka 使用者带来诸多问题,发现都会偶然出现无法彻底删除kafka的情况。
前提:kafka必须配置参数delete.topic.enable=true

  1. 如果需要被删除topic 此时正在被程序 produce和consume,则这些生产和消费程序需要停止
  2. 执行删除命令
    ./bin/kafka-topics --delete --zookeeper xxxx:2181 --topic topicName
  3. 执行查询命令
    ./bin/kafka-topics.sh --list --zookeeper xxxx:2181
    如果topicName正常被删除,那说明正常删除,如果被标记为--marked for deletion,说明还有对这个topic的引用

另外如果topic被标记为--marked for deletion,这时如果去zookeeper的/brokers/topics/节点下删除这个topic(不建议这样做),虽然真的在kafka中查不到这个topic了,但是可能会引出很多意想不到的异常,例如常见的:

WARN Error while fetching metadata with correlation id 0 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

上面这个错误就是异常topic引起的,当producer或consumer向这个topic发送数据/读取数据时不会报错,也什么都不提示,只有打印log4j日志才可以看到上面的错误信息,此时最简单的方法就是重建topic。

还有种方法是重启zookeeper和kafka,这时topic应该就恢复正常了,可是线上的kafka和zk怎么会让你随便重启呢,所以最好的方法还是重建topic,避免这个问题的方法就是要正确删除topic。

重点

上一篇下一篇

猜你喜欢

热点阅读