Flink 可以为单个 table/window 处理约 50 GB 的状态吗?
Can Flink handle ~50 GB of state for a single table/window?
我正在构建一个流式分析,单个 table 需要大约 50 GB 的内存初始状态。 ~50 GB 是我将状态加载到 Scala HashMap[String,String] 时使用的 RAM 量。
对于随时间增长的单个 table,Flink 能否处理约 50 GB 的状态?
我能否以流式传输方式对此 table 执行查找和更新?
备注:
- 我无法将类型更改为更小的类型。
- 状态用作将一个字符串映射到另一个字符串的查找。
- 该州翻倍至 100 GB 大约需要三年时间(激进的估计,因为目前的州需要十年才能生产)。
- 这个 Flink 博客声称状态大小应该不是问题,但我想在启动之前我会仔细检查。提到了 TB 的状态。
Flink状态下单个table50-100GB不是问题。
但需要明确的是,当我们谈论在 Flink 中拥有大量状态(例如 TB)时,我们谈论的是跨许多并行任务分片的键控状态。是的,您可以有一个非常大的 table,但任何给定的实例都只会包含 table.
行的子集
请注意,您将需要选择一个状态后端——要么是基于堆的状态后端,它将状态保存在内存中,作为 JVM 堆上的对象,要么是 RocksDB 状态后端,它将保存状态作为磁盘上带有内存缓存的序列化字节。
我正在构建一个流式分析,单个 table 需要大约 50 GB 的内存初始状态。 ~50 GB 是我将状态加载到 Scala HashMap[String,String] 时使用的 RAM 量。
对于随时间增长的单个 table,Flink 能否处理约 50 GB 的状态?
我能否以流式传输方式对此 table 执行查找和更新?
备注:
- 我无法将类型更改为更小的类型。
- 状态用作将一个字符串映射到另一个字符串的查找。
- 该州翻倍至 100 GB 大约需要三年时间(激进的估计,因为目前的州需要十年才能生产)。
- 这个 Flink 博客声称状态大小应该不是问题,但我想在启动之前我会仔细检查。提到了 TB 的状态。
Flink状态下单个table50-100GB不是问题。
但需要明确的是,当我们谈论在 Flink 中拥有大量状态(例如 TB)时,我们谈论的是跨许多并行任务分片的键控状态。是的,您可以有一个非常大的 table,但任何给定的实例都只会包含 table.
行的子集请注意,您将需要选择一个状态后端——要么是基于堆的状态后端,它将状态保存在内存中,作为 JVM 堆上的对象,要么是 RocksDB 状态后端,它将保存状态作为磁盘上带有内存缓存的序列化字节。