首页 > 解决方案 > 删除主题后的 Broker 磁盘使用情况

问题描述

我正在使用 Apache Kafka。我将巨大的数据库转储到 Kafka 中,其中每个数据库的表都是一个主题。

在主题完全消耗之前,我无法删除它。我无法设置基于时间的保留策略,因为我不知道何时会使用主题。我有有限的磁盘和太多的数据。我必须编写代码,以编程方式通过消费和删除进行编排。我知道问题出现是因为我们使用 Kafka 进行批处理,但我无法更改技术堆栈。

从代理中删除消费主题的正确方法是什么?

目前,我正在打电话kafka.admin.AdminUtils#deleteTopic。但我找不到明确的相关文档。方法签名不包含 kafka 服务器 URL。这是否意味着我只删除了主题的元数据并且没有减少代理的磁盘使用量?那么当真正的附加日志文件删除发生时呢?

标签: javaapache-kafka

解决方案


您是否可以使用基于大小的策略,而不是使用基于时间的保留策略?log.retention.bytes是一个每个分区的设置,可能会对您有所帮助。

我不确定您要如何确定主题已完全使用,但调用deleteTopic该主题最初会将其标记为删除。一旦没有消费者/生产者连接到集群并访问这些主题,并且如果delete.topic.enable在您的文件中设置为 true server.properties,则控制器将尽快从集群中删除该主题。这包括从磁盘中清除数据。执行此操作可能需要几秒钟到几分钟的时间。


推荐阅读