Kafka kstream-kstream joins with sliding window memory usage grows over the time till OOM(Kafka kstream-kstream加入了滑动窗口,内存使用量随着时间的推移不断增长,直到OOM)
问题描述
我在使用kstream联接时遇到问题。我所做的是从一个主题中将3种不同类型的消息分离到新的流中。 然后与创建另一个流的两个流进行一次内部联接,最后我与新流和最后一个剩余的流进行最后一次左联接。
联接的窗口时间为30秒。
这样做是为了筛选出某些被其他邮件覆盖的邮件。
我在Kubernetes上运行此应用程序,Pod的磁盘空间一直在无限增长,直到Pod崩溃。
我已经意识到这是因为联接将数据存储在本地的tmp/kafka-stream目录中。
这些目录称为: KSTREAM-JOINTHIS... KSTREAM-OUTEROTHER..它存储来自rocks Db的sst文件,并且这些文件无限增长。
我的理解是,由于我使用30秒的窗口时间,这些应该在特定时间之后被清除,但事实并非如此。
我还将WINDOW_STORE_CHANGE_LOG_ADDITIONAL_RETENTION_MS_CONFIG更改为10分钟,以查看是否有不同的更改。
我需要了解如何更改这一点。
推荐答案
窗口大小并不决定您的存储要求,而是决定加入的宽限期。为了处理无序记录,数据的存储时间比窗口大小更长。在较新版本中,需要始终通过JoinWindows. ofTimeDifferenceAndGrace(...)
指定宽限期。在旧版本中,您可以通过JoinWindows.of(...).grace(...)
设置宽限期--如果未设置,则默认为24小时。
WINDOW_STORE_CHANGE_LOG_ADDITIONAL_RETENTION_MS_CONFIG
配置数据在集群中存储的时间长度。因此,您可能也想减少它,但这无助于减少客户端存储需求。
这篇关于Kafka kstream-kstream加入了滑动窗口,内存使用量随着时间的推移不断增长,直到OOM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Kafka kstream-kstream加入了滑动窗口,内存使用量随着时间的推移不断增长,直到OOM
基础教程推荐
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 在螺旋中写一个字符串 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01