Flink内存模型
flink官网上 的内存分布图如下:
1、processMemory
是分配的总大小,比如yarn分配的container的总大小。
2、framework memory与 task memory
framework不属于slot内存,而task是slot内的使用的内存
heap memory内存主要是java对象和stateBackend内存
framework heap memory+task heap memory=jvm堆内存总大小(-Xmx)
framework off-heap memory+task off-heap memory=分配的堆外直接内存大小(-XX:MaxDirectMemorySize)
3、network memory(使用的是直接内存)
用于数据的传输,同一个taskExecutor的各个slot之间没有隔离
network memory的大小是由作业的拓扑决定的,不足会导致运行失败。
4、managed memory(native memory)
用于RocksDBStateBackend,Batch Operator,各个slot之间是相互隔离的
如果使用的是heapstatebackend或者没有状态,此时可以设置managed memory的内存为0