有时候因为特定的业务须要, 咱们的 kafka 分区的磁盘可能不够, 这个时候咱们须要本身删除磁盘数据或者应用脚本定时检测删除生产完的磁盘数据。然而有一个重要的点是: 咱们须要应用同一个 topic 主题,所以在删除数据之后咱们须要重置这些主题的 offset。
咱们以 kafka 容器集群部署形式为例。
查看分区应用主题大小
1. 进入 kafka 集群 docker 机器
docker exec -it kafka bash;
2. 进入数据目录下:
有时候咱们的磁盘是挂载到本地磁盘的,所以咱们也能够在本地磁盘查看
cd /kafka/kafka-logs-kafka1
3. 查看 topic 对应文件大小:
du -sh *;
呈现:
532G test-1
532G test-6
所以咱们的 test 主题的数据量比拟大。
4. 而后进行服务, 让对应的 topic 数据生产结束
咱们在咱们的 kafka-manager 上进行操作: 删除主题,在从新创立主题,设置分区。
5. 重置生产 group 的偏移量 lag
bin/kafka-consumer-groups.sh --bootstrap-server 192.168.100.11:9092 --group process-group-news --topic test --to-earliest --reset-offsets --execute
6. 查看某个 kafka 生产组的分区 offset 状况
./kafka-consumer-groups.sh --bootstrap-server 192.168.100.11:9092 --describe --group process-group-news
7. 查看数据总量
./bin/kafka-run-class.sh kafka.tools.GetOffsetShell --broker-list 192.168.100.11:9092 --topic test --time -1
8. 删除主题
./bin/kafka-topics.sh --delete --topic test --bootstrap-server 192.168.100.11:9092
9. 删除生产组
./bin/kafka-consumer-groups.sh --bootstrap-server 192.168.100.11:9092 --describe --group process-group-news
10. 获取 1 条数据
./bin/kafka-console-consumer.sh --bootstrap-server 192.168.100.11:9092 --from-beginning --topic test --max-messages 1;