kafka磁盘爆满

1,在cm上查询kafka数据目录:

log.dirs:/var/local/kafka/data

2,查看目录下各子目录占用空间大小情况,过滤上G的topic数据

du -sh * | sort -nr | grep 'G' | grep 'channel'

3,修改topic数据的的有效期命令,优化

kafka-topics --zookeeper zk1:2181 -topic topicname --alter --config retention.ms=86400000

4,删除kafka相关的数据目录,删除之前,先关闭写入kafka的相关服务如flume,删除磁盘占用空间过大的数据目录,此处主要是flume_*_channel_*所占用的目录

rm -rf /var/local/kafka/data/flume_packet_channel-*

5,删除kafka topic

(1)查询flume管道相关的channel:kafka-topics --list --zookeeper 10.11.1.1:2181,10.11.1.2:2181

(2)删除对应管道topic

kafka-topics --zookeeper 10.11.1.1:2181,10.11.1.2:2181 --delete --topic flume_forward_channel

kafka-topics --zookeeper 10.11.1.1:2181,10.11.1.2:2181 --delete --topic flume_offline_channel

kafka-topics --zookeeper 10.11.1.1:2181,10.11.1.2:2181 --delete --topic flume_packet_channel

kafka-topics --zookeeper 10.11.1.1:2181,10.11.1.2:2181 --delete --topic flume_realInfo_es_channel

kafka-topics --zookeeper 10.11.1.1:2181,10.11.1.2:2181 --delete --topic flume_realInfo_redis_17691_channel

kafka-topics --zookeeper 10.11.1.1:2181,10.11.1.2:2181 --delete --topic flume_todayExpire_channel

删除完成后,会有“marked for deletion”标记,需要去zookeeper删除源数据信息,如图:

5,删除zookeeper相关的路径

(1)登录zookeeper客户端:命令:

./bin/zookeeper-client或者zookeeper-client

(2)找到topic所在的目录:

ls /brokers/topics

(3)找到要删除的topic,执行命令:

rmr /brokers/topics/topic name

即可,此时topic被彻底删除。

另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/topic name,如果你删除了此处的topic,那么marked for deletion 标记消失完成

rmr /brokers/topics/flume_forward_channel

rmr /brokers/topics/flume_offline_channel

rmr /brokers/topics/flume_packet_channel

rmr /brokers/topics/flume_realInfo_es_channel

rmr /brokers/topics/flume_realInfo_redis_17691_channel

rmr /brokers/topics/flume_todayExpire_channel

(4)重启zookeeper和kafka可以用下面命令查看相关的topic还在不在,此时以上步骤都操作没问题的话,被标记为“marked for deletion”的topic将消失,CM 上重启即可

kafka-topics --list --zookeeper 10.11.1.1:2181,10.11.1.2:2181

端口占用:

netstat -alnp | grep xxxx

kill -9 pid