flink流与flink批处理中的内存管理


0

我浏览了很多博客和堆栈溢出的答案,但我不清楚 Flink内存管理。在一些博客中,我发现了“内存管理器池”和“Rocksdb”。我使用的是rocksdb,我假设我所有的状态都存储在这个数据库中。

以下是我的怀疑。。

    在 streaming中如何处理内存管理过程?

2 答案


0

流动

当您使用RocksDBStatebackend all KeyedState(ValueState,MapState。。。和计时器)存储在RocksDB中。运算符状态保留在堆中。OperatorState通常非常小,很少由Flink开发人员直接使用。

对于Flink 1.10+,托管内存包括RocksDB使用的所有内存。Flink确保RocksDB的内存使用量保持在分配的托管内存的限制内。使用任务管理器.memory.managed.fraction调整你给RocksDB的内存量。通常,除了500MB内存外,你可以把所有内存都给RockSDB。

批处理程序不使用Statebackend。托管内存用于堆外 join、排序等任务管理器.memory.managed.fraction对于批处理和流式处理是相同的。


0

root据Flink文档,内存管理在流式处理和批处理上有所不同


我来回答

写文章

提问题

面试题