【问题标题】:Kafka - Retention period ParameterKafka - 保留期参数
【发布时间】:2020-08-05 00:29:14
【问题描述】:

试图了解 Apache Kafka 中保留期背后的逻辑。请帮助我了解以下情况的情况。

  1. 如果保留期设置为 0,会发生什么情况?是否会删除所有记录?
  2. 如果我们删除保留参数本身,它会采用默认值吗?

【问题讨论】:

  • 注意:[confluent-kafka] 标签仅用于基于 librdkafka 的客户端。

标签: apache-kafka


【解决方案1】:
  1. Kafka 不允许您将保留期设置为零,以小时为单位。它必须至少为 1。如果将其设置为零,您将收到以下错误消息,并且代理将无法启动。

java.lang.IllegalArgumentException:要求失败: log.retention.ms 必须是无限的 (-1) 或等于或大于 1

您仍然可以在使用参数log.retention.minuteslog.retention.ms 时将其设置为零

  • 现在,让我们来谈谈数据删除。在这种情况下,即使在设置的保留期(例如 1 小时或 1 分钟)到期后,旧数据也不太可能被删除,因为server.properties 中的另一个变量log.segment.bytes 在那里发挥着重要作用。 log.segment.bytes 的值默认设置为 1GB。 Kafka 只对封闭的段执行删除。因此,一旦日志段达到 1GB,只有在关闭它之后,才会开始保留。因此,您需要将 log.segment.bytes 的大小减小到某个近似值,最多为累积投资的大小您计划在短时间内保留的数据量。例如。如果您的保留期为 10 分钟,并且您每分钟获得大约 1 MB 的数据,那么您可以设置 log.segment.bytes=10485760,即 1024 x 1024 x 10。您可以在this 线程中找到有关保留如何依赖于数据摄取和时间的示例。

  • 为了测试这一点,我们可以尝试一个小实验。让我们启动 Zookeeper 和 Kafka,创建一个名为 test 的主题并将其保留期更改为零。

    1) nohup ./zookeeper-server-start.sh ../config/zookeeper.properties &
    2) nohup ./kafka-server-start.sh ../config/server.properties &
    3) ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
    4) ./kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name test --alter --add-config log.retention.ms=0
    
  • 现在,如果我们使用 Kafka-console-producer 插入足够的记录,即使在 2-3 分钟后,我们也会看到记录没有被删除。但是现在,让我们将 log.segment.bytes 更改为 100 字节。

    5) ./kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name test --alter --add-config segment.bytes=100 
    
  • 现在,我们几乎会立即看到旧记录正在从 Kafka 中删除。

  1. 是的。就像server.properties 中的每个 Kafka 参数一样,如果我们删除/注释掉一个属性,该属性的默认值就会生效。我认为,默认保留期是 1 周。

【讨论】:

  • 根据文档保留时间为1周(属性log.retention.hours=168。可以在broker网站上更改,但也可以为每个主题设置不同的值
  • @wardziniak 我已经在答案中提到了默认保留期,但我认为添加有关主题特定参数的信息将使答案完整。我会用更多细节更新我的答案。谢谢。
  • "即使2-3分钟后,我们也会看到记录没有被删除" -- 这是因为段文件仍然处于活动状态,对吧?
  • @cricket 是的,就是这个原因。
猜你喜欢
  • 2017-03-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 2017-07-21
  • 2017-07-19
  • 2021-10-20
  • 2012-03-28
  • 1970-01-01
相关资源
最近更新 更多