Flink 应用程序的检查点大小不断增长

时间:2021-05-07 04:28:58

标签: apache-flink flink-streaming

我有一个这样的管道:

env.addSource(kafkaConsumer, name_source)
            .keyBy { value -> value.f0 }
            .window(EventTimeSessionWindows.withGap(Time.seconds(2)))
            .process(MyProcessor())
            .addSink(kafkaProducer)
            

这些键保证在当前正在处理的数据中是唯一的。 因此,我希望状态大小不会超过 2 秒的数据增长。

但是,我注意到状态大小在过去一天中一直在稳步增长(自应用部署以来)。

enter image description here

这是 flink 中的错误吗?

在 aws kinesis 数据分析中使用 flink 1.11.2。

1 个答案:

答案 0 :(得分:0)

Kinesis Data Analytics 始终使用 RocksDB 作为其状态后端。使用 RocksDB,死状态不会立即清除,它只是用墓碑标记,然后被压缩。我不确定 KDA 如何配置 RocksDB 压缩,但通常它会在级别达到特定大小时完成 - 我怀疑您的状态大小仍然足够小以至于没有发生压缩。

使用增量检查点(这就是 KDA 所做的),检查点是通过复制 RocksDB 的 SST 文件来完成的——在您的情况下,这些文件可能充满了陈旧数据。如果您让它运行足够长的时间,您最终应该会看到检查点大小在压缩完成后显着下降。