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

qaxu7uf2  于 2021-06-26  发布在  Flink
关注(0)|答案(2)|浏览(553)

我浏览了很多博客和堆栈溢出的答案,但是我不清楚flink的内存管理。在一些博客中,我发现了“内存管理器池”和“rocksdb”。我正在使用rocksdb,我假设我的所有状态都存储在该数据库中。
这是我的疑问。。
在流媒体中如何处理内存管理过程?
流式处理和批处理中的内存管理有什么区别?
“内存管理器池”和“后端状态(rcokdb)”之间的区别
在流媒体中,你所说的“flink管理内存”是什么意思?是否包括racksdb缓存和缓冲区所需的内存?

nuypyhwy

nuypyhwy1#

根据flink文件内存管理在流式处理和批处理上的不同

lokaqttq

lokaqttq2#

流动
当您使用rocksDBStateBendAll keyedstate(valuestate,mapsState。。。和定时器)存储在rocksdb中。运算符状态保存在堆上。operatorstate通常非常小,很少由flink开发人员直接使用。
对于flink 1.10+,托管内存包括rocksdb使用的所有内存。flink确保rocksdb的内存使用率保持在分配的托管内存的限制范围内。使用 taskmanager.memory.managed.fraction 调整你给rocksdb的内存。通常,除了500mb之外,您可以将所有内存都提供给rocksdb。
批量
批处理程序不使用statebackend。托管内存用于堆外连接、排序等 taskmanager.memory.managed.fraction 对于批处理和流式处理是相同的。

相关问题