Flink资源与内存模型占用空间计算方式。
Posted 青冬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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之后,对内存模型有很大的改动,变为以下图示:
两大部分,堆内存和堆外内存。
内存模型详解
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。
那么从下往上开始计算。
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
4−0.4−0.2−1.36−0.34−0.2−0=1.5G
(页面上可能有一点点偏差,为显示问题)
以上是关于Flink资源与内存模型占用空间计算方式。的主要内容,如果未能解决你的问题,请参考以下文章