Apache Flink - 检查点数据大小随着时间的推移而增加
Posted
技术标签:
【中文标题】Apache Flink - 检查点数据大小随着时间的推移而增加【英文标题】:Apache Flink - Checkpointed Data Size is increasing over the period of time 【发布时间】:2021-03-02 10:15:31 【问题描述】:我在我的 Flink 应用程序(版本 1.11.1)中使用事件时间语义,该应用程序在 AWS 中运行 - 运动分析。此应用程序的源为 kinesis 流,接收器为 Postgres。当在 notifyCheckpointComplete() 上触发 DB 接收器时,检查点间隔为 10 秒。 在将不同的流下沉到 Postgres 之前,我使用多个 CoProcessFunction 和 ValueState 来连接不同的流。
观察是检查点数据大小在一段时间内不断增长,而线程数和堆内存利用率保持不变。 CPU 利用率不超过 30%。我希望检查点数据大小最终会趋于稳定。
在浏览有关状态 TTL 的 flink 文档时,似乎当前状态 ttl 仅支持处理时间语义 - State Time-To-Live (TTL)
基于 Event Time 的 Flink 应用的发展方向是什么?
【问题讨论】:
【参考方案1】:您仍然可以使用状态 TTL。只是状态保留间隔必须用挂钟时间来表示,而不是与事件中的时间戳相关。
但是,如果您想更好地控制清除状态的时间和方式,可以使用 CoProcessFunctions 中的计时器来触发对 clear
的显式调用。
【讨论】:
感谢大卫的快速回复。但是,我正在使用带有 CoProcess 函数的状态 Ttl,但它不能大大提高检查点的大小。在深入研究单个任务之后,键控流上的 timeWindow() 函数似乎消耗了大部分大小。这种情况下如何处理状态? 见***.com/questions/66472206/…。以上是关于Apache Flink - 检查点数据大小随着时间的推移而增加的主要内容,如果未能解决你的问题,请参考以下文章