我们有一个永远运行的flink作业,从kafka读取,创建滑动时间窗口(流间隔:1小时,2小时到24小时)和(幻灯片间隔:1分钟,10分钟到1小时)。基本上是its : KafkaSource.keyBy(keyId).SlidingWindow(stream,幻灯片).reduce.sink
我最近启用了rocksDB后端和incremental=true以及hdfs持久存储的检查点。
从最后的4/5天开始,我正在监控工作及其运行情况,但我担心的是检查点的大小。正如rocksDB所做的压缩和合并,大小不会永远增长,但仍然在增长,到目前为止已经达到了100 gb。
那么,什么是检查点永远运行作业的最好方法呢?
它将拥有数以百万计的独特keyId。那么,在检查时,每个操作符会有一个每个密钥的状态吗?
发布于 2022-11-15 03:26:11
如果您的密钥总量处于控制之下,则不需要担心检查点大小的增加,这意味着它最终会收敛。
如果您仍然想要减少检查点的大小,您可以为您设置TTL状态,如果您的状态可以被视为过期的,并且在一段时间内未被操作。
Flink状态与密钥组相关联,这意味着一组密钥.密钥组是flink状态的单位.每个密钥的状态都将包含在已完成的检查点中。但是,使用增量模式,一些检查点将共享.sst文件,因此您可以看到检查点大小不像总检查点大小那么大。如果在上一次检查点间隔之间没有更新某些键,则这次将不会上载这些键的状态。
https://stackoverflow.com/questions/74349025
复制相似问题