flink可以为单个表/窗口处理~50 gb的状态吗?

b1zrtrql  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(311)

我正在构建一个流分析,它需要一个表在内存中大约50gb的初始状态~50gb是将状态加载到scala hashmap[string,string]时使用的ram量。
flink能处理一个表的状态为50gb,并且随着时间的推移而增长吗?
我能否以流式方式对此表执行查找和更新?
笔记:
我不能把字体改成更小的。
状态用作将一个字符串Map到另一个字符串的查找。
该州需要三年时间才能翻一番,达到100GB(由于目前该州的生产需要十年的时间,这是一个大胆的估计)。
这个flink博客声称州的大小应该不是问题,但我想我会在旋转它之前再检查一遍。提到了数兆字节的状态。
https://flink.apache.org/features/2018/01/30/incremental-checkpointing.html

g9icjywg

g9icjywg1#

对于flink状态下的单个表,50-100gb不是问题。
但要清楚的是,当我们谈论在flink中有大量的状态(例如,太字节)时,我们谈论的是在许多并行任务中分割的键控状态。是的,您可以有一个非常大的表,但是任何给定的示例都只能有该表行的子集。
请注意,您将需要选择一个状态后端——或者是一个基于堆的状态后端,它将状态作为jvm堆上的对象保存在内存中,或者是rocksdb状态后端,它将状态作为带有内存缓存的磁盘上的序列化字节保存。

相关问题