在kafka中,我已将保留政策设置为server.properties
############################# Log Retention Policy #############################
...
log.retention.hours=72
...
主题retention.ms
设置为172800000
(48h)。
但是,文件夹/ tmp / kafka-logs中仍有旧数据,并且没有删除任何数据。 我在更改这些属性后等了几个小时。
是否有需要设置的东西?目前正在制作和使用所有主题。
答案 0 :(得分:3)
关键是将log.cleanup.policy
设置为compact
或delete
。我没有设置这个属性。
正在运行:kafka-topics --zookeeper 127.0.0.1:2181 --topic topic1 --describe
显示在主题上设置的属性,例如。 Configs:retention.ms=172800000,cleanup.policy=compact
必须设置cleanup.policy
。
答案 1 :(得分:1)
如kafka retention policy didn't work as expected中所述:
日志保留基于日志文件的创建日期。尝试设置log.roll.hours
< 24(因为[默认] [1]它是24 * 7)。
答案 2 :(得分:1)
Compact
策略将仅压缩键中的值。也就是说,它最终将触发压缩过程,该过程将只为密钥保留一个(最终)值。但是永远不要删除最后一个值。
为了按时间触发删除,您需要设置delete
策略。在这种情况下,删除过程将删除早于给定数据的数据。
但是,您可以将策略设置为compact,delete
,以在同一个主题上利用这两个过程(在早期版本中不可用)。
但是,这些过程并非完全精确:在某些情况下,它们最终会被触发,例如:
# The interval at which log segments are checked to see
# if they can be deleted according to the retention policies
log.retention.check.interval.ms=300000
(检查Kafka documentation上的更多条件,然后保证将删除早于阈值的数据。
此外,针对不同的时间粒度有不同的设置,并且它们具有优先级(如果设置了一个,它将忽略下一个)。确保没有意外覆盖。请查看综合文档以了解详细信息。