【问题标题】:Kafka state stores forget old data?Kafka 状态存储忘记了旧数据?
【发布时间】:2018-02-11 06:53:39
【问题描述】:

我尝试像这样查询我的本地窗口状态存储:

long timeFrom = 0;
long timeTo = System.currentTimeMillis();
WindowStoreIterator<Long> iterator = windowStore.fetch("topic name", timeFrom, timeTo);

我只取回大约 36 小时的窗口化数据,但想回到过去。

我尝试通过多种方式配置保留,还重新启动了我的 kafka 服务器和 zookeeper:

在 config/server.properties 中: log.retention.hours=87600

bin/kafka-topics.sh --zookeeper zk.yoursite.com --alter --topic topicName --config retention.ms=86400000

仍然 Kafka 不保留旧数据。

【问题讨论】:

    标签: apache-kafka retention


    【解决方案1】:

    我认为您正在寻找窗口保留,而不是日志保留。如果是这样,您可以在此处了解如何根据自己的喜好进行配置 http://docs.confluent.io/current/streams/developer-guide.html#windowing

    【讨论】:

    • 有趣的是,在定义此窗口保留时,过去的数据会立即出现 - 因此它们从未被删除,只是没有被获取
    • 是的,它是窗口保留,所以数据仍然存在于更改日志中以拉起,但你必须告诉它去获取它:)
    【解决方案2】:

    检查此设置log.retention.bytes 以查看您是否在删除特定大小后的数据。保留政策也可以基于大小。

    【讨论】:

    • 使用consumer消费时能看到旧数据吗?
    • log.retention.bytes 根本没有设置,我猜它没有默认值。确保我现在设置它,然后看看会发生什么......
    • @mrnakumar 我还没有检查。
    • 你能检查一下吗?这将帮助我们确定问题出在哪里,在 Kafka 或流代码本身中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2018-05-09
    • 2019-07-03
    相关资源
    最近更新 更多