使 Kafka 主题日志保留永久化
Posted
技术标签:
【中文标题】使 Kafka 主题日志保留永久化【英文标题】:Make Kafka Topic Log Retention Permanent 【发布时间】:2017-02-05 16:44:51 【问题描述】:我正在将日志消息写入 Kafka 主题,并且我希望永久保留该主题。我在 Kafka 和 Kafka Connect(_schemas、connect-configs、connect-status、connect-offsets 等)中看到了日志保留时间不会删除的特殊主题。我如何强制一个主题与这些其他特殊主题一样?是命名约定还是其他一些属性?
谢谢
【问题讨论】:
【参考方案1】:如果您想永久保留所有主题,可以将log.retention.hours
和log.retention.bytes
都设置为-1。
【讨论】:
似乎在 2015 年 4 月之前执行此操作的方法是将log.retention.hours
设置为 2147483647
。然后JIRA 添加了 -1 功能。然而,JIRA 没有明确说明什么值被解释为“永远保留”。我稍微挖掘了一下代码,确实是-1。你也可以为hours, minutes or ms设置-1
除了占用太多空间之外,还有什么理由不应该这样做?除此之外,是否存在可扩展性或速度问题?
值得注意的是,限制是每个分区的空间,每个分区被限制为一个磁盘的大小。间接地,这可能会影响可扩展性,但除此之外我认为没有任何影响。
您确定 log.retention.hours 有效吗?上下文:***.com/a/70535714/4106031【参考方案2】:
这些特殊主题是压缩主题。这意味着它们由键控消息组成,并且只保留列表最近的键。完整的写here。在大多数情况下,这可能是您想要的无限保留时间。
【讨论】:
如何只保留一个主题的数据(永远保留数据)? log.retention.bytes 和 log.retention.ms 适用于所有主题,但不仅仅适用于单个主题。【参考方案3】:您可以在此处找到参数的默认值: https://jaceklaskowski.gitbooks.io/apache-kafka/content/kafka-properties.html
log.retention.bytes
和 log.retention.ms
如果您想永久保留主题中的数据,可以将其设置为 -1。
【讨论】:
如何只保留一个主题的数据(永远保留数据)? log.retention.bytes 和 log.retention.ms 适用于所有主题,但不适用于任何单个主题。 log.retention.hours=-1 不起作用吗?以上是关于使 Kafka 主题日志保留永久化的主要内容,如果未能解决你的问题,请参考以下文章