【问题标题】:Kafka-streams: setting internal topics cleanup policy to delete doesn't workKafka-streams:将内部主题清理策略设置为删除不起作用
【发布时间】:2019-02-07 14:51:07
【问题描述】:

我使用 kafka 流 reduce 功能,它会创建一些状态存储更改日志 kafka 内部主题(如 app-KSTREAM-REDUCE-STATE-STORE-0000000002-changelog )。

我想设置 retention bytes 并将 cleanup policy 更改为 delete 以防止存储空间已满。所以我在kafka流代码中设置了以下配置:

Properties props = new Properties();
props.put(StreamsConfig.TOPIC_PREFIX + TopicConfig.RETENTION_BYTES_CONFIG, Constants.INTERNAL_TOPICS_RETENTION_BYTES);
props.put(StreamsConfig.TOPIC_PREFIX + TopicConfig.CLEANUP_POLICY_CONFIG, TopicConfig.CLEANUP_POLICY_DELETE);
KafkaStreams streams = new KafkaStreams(builder.build(), props);

但是,当生成新主题时,将保留配置应用于新生成的内部主题,并且清理策略保持紧凑

是否有任何遗漏的步骤? (或者是否可以将内部主题清理策略设置为删除?)

我使用 kafka 版本 1.0.0 和 kafka-streams 版本 1.0.0

【问题讨论】:

    标签: apache-kafka apache-kafka-streams


    【解决方案1】:

    感谢国璋在kafka mailing list的回答:

    您描述的问题似乎是自 1.1.0 以来已解决的旧错误 (作为https://jira.apache.org/jira/browse/KAFKA-6150 中修复的一部分)。

    ...您无需升级代理即可使用更新的 Streams 库 版本。

    将 kafka-streams 版本升级到 1.1.0 解决了该问题。

    【讨论】:

    • “防止存储已满”——不知道你的意思。如果主题被压缩,存储将与唯一键的数量成正比。如果您有无限数量的唯一键,您的本地存储仍将无限增长。您的使用模式表明了一种反模式——您确定您正确使用了 Kafka Streams 吗? RocksDB 存储没有 TTL。当前的解决方法是使用窗口存储使旧数据过期。
    猜你喜欢
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2019-04-30
    • 2023-03-17
    • 1970-01-01
    • 2013-04-23
    • 2018-10-20
    相关资源
    最近更新 更多