Flink 1.12 内存和提交参数

2021-12-28  本文已影响0人  光剑书架上的书

flink1.12 内存和提交参数

在使用yarn cluster模式提交flink的任务时候,往往会涉及到很多内存参数的配置

例如下面的提交命令:

flink run -d -m yarn-cluster  -yjm 512 -ytm 5028  
-yD jobmanager.memory.off-heap.size=64m 
-yD jobmanager.memory.jvm-metaspace.size=128m 
-yD jobmanager.memory.jvm-overhead.min=64m 
-yD  taskmanager.memory.jvm-metaspace.size=128m 
-yD taskmanager.memory.jvm-overhead.max=192m 
-yD taskmanager.memory.network.max=128m 
-yD taskmanager.memory.managed.size=64m -c com.xxx.xxx  ./xxx.jar

我们需要知道Jobmanager和Taskmanager对应的内存模型,来分配相应的内存,让内存利用率最大化。

JobManager内存模型:

参数设置:

那么如果设置了 -yjm 1024 ,JobManager的JVM的堆内存大小是多少呢?

首先,在没有显示的设置其它内存的情况下,所有的内存组成部分都用默认值

通过观察启动日志也可以发现:JVM Overhead的大小为448mb

有点时候,我们会希望运用到JVM Head的内存更多一点,那么就可以尝试着把其它的部分调低,来给到JVM Head更多的内存。

TaskManager的内存模型:

参数设置:

那么如果设置了 -ytm 1024 、Managed Memory 为100mb,TaskManager的JVM的堆内存大小是多少呢?

首先,在没有显示的设置其它内存的情况下,所有的内存组成部分都用默认值

在启动日志中也能够看得到:

在设置内存的时候 如果托管内存(Managed Memory)用不到的话,可以设置为0,以至于能将更多的内存用于JVM Head内存上。

并行度和TaskManager的关系

taskmanager的数量 = p / ys + 1
  jobmanager的数量 = 1
  消耗的container的数量 = TaskManager的数量+1,+1是因为还有JobManager这个进程。
  消耗的vcore的数量 = TaskManager的数量 * solt + 1,+1理由同上
  消耗的yarn内存数 = jobmanager的数量 * yjm + taskmanager的数量 * ytm

上一篇 下一篇

猜你喜欢

热点阅读