Flink 第1章 Flink资源与内存模型占用空间计算方式。

Flink 第1章 Flink资源与内存模型

资源配置调优

开发了一些程序,那么怎么评估这些程序所需要的资源配比这些呢?
比如使用标准的Flink任务提交脚本 Generic CLI模式(通用客户端模型)

从1.11开始,增加了通用的客户端模型 使用-D指定kv变量(这里演示以1.13.2为准)。

bin/flink run \ 
-t yarn-per-job \ 
-d \
-p 5\   # 执行并行度
-Dyarn.application.queue=test \ # 指定yarn队列
-Djobmanager.memory.preocess.size=1024mb \ # 指定JM总进程的内存
-Dtaskmanager.memory.process.size=1024mb \ #指定每个TM的总进程大小
-Dtaskmanage.numberOfTaskSlots=2 \ #指定每个TM的slot数
-c com.huangyichun.flink.Demo \ #指定运行类
./flink-test-1.0.jar  #指定jar包

内存设置

在Flink1.10之后,对内存模型有很大的改动,变为以下图示:
《Flink 第1章 Flink资源与内存模型占用空间计算方式。》
《Flink 第1章 Flink资源与内存模型占用空间计算方式。》

两大部分,堆内存和堆外内存。

内存模型详解

JVM 特定内存

JVM本身需要使用到的内存,比如JVM的metaspace和over-head

JVM metaspace 元空间

taskmanager.memort.jvm-metaspace.size 256mb

JVM over-head 执行开销

JVM执行时自身所需要的内容,包括线程堆栈、IO、编译缓存等所使用的内存。有个OOM不就是 over-head

taskmanage.memory.jvm-overhead.fraction 0.1
taskmanage.memory.jvm-overhead.min 192mb
taskmanage.memory.jvm-overhead.max 1gb

Flink 框架内存

Flink框架,即TaskManager本身所占用的内存,不计入Slot的资源中。
分为两部分,堆内的和堆外的。

堆内

taskmanager.memory.framework.heap.size 128mb

堆外

taskmanager.memory.framework.off-heap.size 128mb

Task内存

Task 执行用户代码时所使用的的内存,也分为堆内和堆外。

堆内

taskmanager.memory.task.heap.size none
扣除其他部分的内存,剩余的

堆外

taskmanage.memory.task.off-heap.size 0
不适用堆外内存

网络内存

网络数据交换所使用的堆外内存大小,如网络数据交换缓冲区

网络内存

taskmanager.memory.network.fraction 0.1
这里注意并不是总内存的0.1,而是扣除JVM特定内存的0.1
taskmanager.memory.network.min 64mb
taskmanager.memory.nerwork.max 1gb

托管内存

托管内存,只要使用了RocksDB State Backend的本地内存和批的排序、哈希表、缓存中间结果就会占用这部分内存。

托管内存

taskmanager.memory.managed.fraction 0.4
taskmanager.memory.managed.size none
size为空则等于Flink内存*0.4

内存使用实例

比如程序直接提交到Yarn上去,设置了

taskmanager.memory.process.size 进程的总内存 = 4G。

那么从下往上开始计算。
《Flink 第1章 Flink资源与内存模型占用空间计算方式。》

JVM 执行开销

192mb<=4G*0.1<=1gb,那么就占用0.4G。

JVM 元空间

固定0.2G

Flink的内存

4G-0.4G-256mb =3.4G

管理内存

3.4G*0.4 = 1.36G

网络缓冲区

364mb<=3.4*0.1<=1gb,占用0.34G

Flink框架堆内对外

0.1G*2 = 0.2G

Task堆外

默认为0

Task堆内

4 − 0.4 − 0.2 − 1.36 − 0.34 − 0.2 − 0 = 1.5 G 4 – 0.4 -0.2 -1.36 – 0.34 -0.2 -0 =1.5 G 40.40.21.360.340.20=1.5G
(页面上可能有一点点偏差,为显示问题)

    原文作者:青冬
    原文地址: https://blog.csdn.net/qq_36610426/article/details/123580543
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞