我正在试着从kafka中删除旧的消息,它没有像预期的那样工作。我已经配置了kafka rentension.ms,log.cleanup属性也。但是它在5分钟后没有删除旧的消息。这是配置,在5分钟内,新消息也会发布,尽管kafka主题中存在较旧的记录。您能帮我解决这个配置中缺失的问题吗?因为它增加了存储成本。
-config retention.bytes=-1 --配置cleanup.policy=delete --配置retention.ms=300000
发布于 2020-09-02 19:28:24
首先,如cleanup.policy的配置描述中所述,LogCleaner将只删除主题的旧片段上的数据,了解这一点很重要
“一个字符串,可以是"delete”或"compact“,也可以是”compact“和”delete“。此字符串指定要在旧日志段上使用的保留策略。”
很可能您的所有数据仍然在一个段中,因此您需要减少主题的segment.bytes配置,这样您才能真正获得“旧”段。此配置默认为1 1GB,描述为:
“此配置控制日志的段文件大小。保留和清理始终一次完成,因此较大的段大小意味着较少的文件,但对保留的细粒度控制较少。”
如果您不想等到某个段被填满,也可以随意将配置segment.ms从默认值7天减少到更适合您的情况。此配置描述为:
“此配置控制一段时间后,Kafka将强制日志滚动,即使段文件未满,以确保保留可以删除或压缩旧数据。”
如果您的保留时间很短,比如5分钟,那么您可能还希望将代理范围内的配置log.cleaner.delete.retention.ms从默认值1天减少到一个较低的值。此配置描述为:
“删除记录保留多长时间?”
https://stackoverflow.com/questions/63704272
复制相似问题