使 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.hourslog.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.byteslog.retention.ms 如果您想永久保留主题中的数据,可以将其设置为 -1。

【讨论】:

如何只保留一个主题的数据(永远保留数据)? log.retention.bytes 和 log.retention.ms 适用于所有主题,但不适用于任何单个主题。 log.retention.hours=-1 不起作用吗?

以上是关于使 Kafka 主题日志保留永久化的主要内容,如果未能解决你的问题,请参考以下文章

Apache Kafka 持久化所有数据

UICollectionView 单元格不保留数据 --- 如何使它们的数据持久化?

kafka怎么收集到flume的日志

Kafka 与传统消息系统之间的三个关键区别

kafka 消息队列

如何使 MYSAPSSO2 cookie 持久化