如何清理Kafka 0.8.2

时间:2015-11-10 14:30:20

标签: java bigdata apache-kafka

我知道在新的Kafka版本中我们有新的保留策略选项 - 压缩日志,删除具有相同键的旧版本消息。但是很长一段时间后,我们将使用旧消息获得太多压缩的日志段。我们如何自动清理这个压缩的日志?

UDPATE

我应该澄清一下,我们需要紧凑的日志以及在这段时间内清理旧邮件的方法。 我在这里找到了同样问题的讨论http://grokbase.com/t/kafka/users/14bv6gaz0t/kafka-0-8-2-log-cleaner 但是没有找到我们如何手动发布消息的thomstone标记,并且不知道这个。

2 个答案:

答案 0 :(得分:1)

这个问题已经过时了,但我想我会就这个问题提供最新的更新。有一个功能(https://issues.apache.org/jira/browse/KAFKA-4015)已经解决并安排在0.10.1.0版本中。

答案 1 :(得分:0)

降低Kafka Log大小的唯一方法是通过日志保留配置设置。

log.retention.{ms,minutes,hours}
log.retention.bytes
  

另请注意,如果同时设置了log.retention.hours和log.retention.bytes,则在超出任一限制时删除一个段。

这两个规定在Kafka中删除日志时。 log.retention.bytes默认为-1,我非常确定将它保留为-1只允许时间配置单独确定何时删除日志。

日志保留和压缩工作彼此分开。使用保留,即使使用日志压缩,也可以在一定时间或大小后删除日志。因此,如果理论上你有100Mb的日志限制,并设置你的log.retention.bytes = 104857600(100Mb)。 Kafka将压缩您的日志,直到其大小达到100Mb,然后将删除必要的消息(最早的消息),直到日志的大小低于100Mb。

编辑:

事实证明,根据mechanikos提供的link,日志保留和压缩是互斥的。虽然设计Kafka似乎很奇怪,但日志将无限增长,无法删除旧的日志消息。