最近工作中经常遇到要手动或者服务器内存不足 自动关掉spark-streaming读取kafka数据的情况 ,本身只有一个节点,宕掉后会导致kafka当前topic异常,读取与写入都获取不到head,所以要删除topic来解决该问题,实际生产中不推介删除topic的策略解决该问题,是否可以通过手动设置head来解决还没有研究。
要完全删除该topic需要删除干净许多地方 然后重启kafka的每个节点,不然都可能导致 之前的删除操作还要重新再来一遍。
另外 我在server.properties中配置了delete.topic.enable=true 通过kafka删除 效果显示的只是mark for deletion 并没有删除
1. 删除topic日志文件 kafka默认的日志目录为/tmp/kafka-logs/ (在server.properties中修改)需要删除kafka集群中每个节点中的该topic日志
2. 连接zookeeper 删除broker
./zkCli.sh --启动zookeeper
ls /brokers/topic --查看topic列表
rmr /brokers/topic/topicname --删除该topic 删除失败可能的原因是里面有子目录 不太清楚递归删除的命令是啥。
ls /admin/delete_topics --查看准备删除的topic列表
rmr /admin/delete_topics/topicname --也要删除
ls /config/topics --查看topic配置文件的列表
rmr /config/topics/topicname --删除
exit
3.重启kafka的每个节点