Kafka删除主题后的经纪人行为

m1m5dgzv  于 2022-12-03  发布在  Apache
关注(0)|答案(2)|浏览(125)

我对Kafka还不熟悉,还搞不清楚它的行为.
我有一个Kafka集群,有三个代理在里面。我已经给了2GB的集群和我的集群磁盘存储达到95%。所以我所做的是删除的主要主题,我用测试。(本主题的复制因子为3,同步副本中的最小值为2,8个分区和3天的保留时间)我删除这个主题的主要原因是我一直使用这个主题,每个测试数据都是针对这个主题产生的。我的目的是释放磁盘存储空间。(我想当我删除主题时,所有来自该主题的持久消息都将被删除,这样我将从我的Kafka簇中获得更多的磁盘空间)当我删除时,我注意到两件事。
1.其中一个代理的磁盘使用率下降了。但另外两个代理的使用率没有任何变化。
1.当我在集群中列出主题时,被删除的主题前面有一个注解,上面写着“标记为删除”
以上行为的原因是什么?
顺便说一句,我已经在Kafka经纪人的属性中设置了delete.topic.enable = true和auto create topic = true。

0ejtzxu1

0ejtzxu11#

由于只有2GB的存储空间,听起来像是达到了存储极限。Kafka可能会在数据空间不足时进入崩溃循环,所以即使主题被标记为删除,因为Kafka不断崩溃,它也无法在清理数据以达到良好状态方面取得进展。
您可以增加代理存储空间,这将允许Kafka进程启动并处于健康状态,此时主题将被正确删除。
The best practices guide提到将存储扩展到大约85%,这是为了确保卷可以在可能需要再次扩展之前完成优化,并在机箱上留下一些缓冲空间。

n3ipq98p

n3ipq98p2#

我认为删除一个主题并不会清空磁盘空间,如果你删除了主题,你可以手动删除该主题分区的索引文件和数据文件,但这不是推荐的方式。
我认为更好的解决方案是将清除策略更新为delete并减少主题的保留时间。然后Kafka将删除该主题的保留时间之前的旧段数据。这样,您可以使Kafka代理清除过时的数据。
如果需要将数据保留在磁盘上,则必须将清除策略更改为compact,并且它将在删除保留时间之后压缩主题的旧段。它将保留分区关键字的最新消息,并逻辑删除该消息关键字的旧消息。

相关问题