我浏览了很多博客和堆栈溢出的答案,但是我不清楚flink的内存管理。在一些博客中,我发现了“内存管理器池”和“rocksdb”。我正在使用rocksdb,我假设我的所有状态都存储在该数据库中。
这是我的疑问。。
在流媒体中如何处理内存管理过程?
流式处理和批处理中的内存管理有什么区别?
“内存管理器池”和“后端状态(rcokdb)”之间的区别
在流媒体中,你所说的“flink管理内存”是什么意思?是否包括racksdb缓存和缓冲区所需的内存?
我浏览了很多博客和堆栈溢出的答案,但是我不清楚flink的内存管理。在一些博客中,我发现了“内存管理器池”和“rocksdb”。我正在使用rocksdb,我假设我的所有状态都存储在该数据库中。
这是我的疑问。。
在流媒体中如何处理内存管理过程?
流式处理和批处理中的内存管理有什么区别?
“内存管理器池”和“后端状态(rcokdb)”之间的区别
在流媒体中,你所说的“flink管理内存”是什么意思?是否包括racksdb缓存和缓冲区所需的内存?
2条答案
按热度按时间nuypyhwy1#
根据flink文件内存管理在流式处理和批处理上的不同
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
对于批处理和流式处理是相同的。