0


[ 2024春节 Flink打卡 ] -- 优化(draft)

2024,游子未归乡。工作需要,flink coding。觉知此事要躬行,未休,特记

  1. 资源配置调优
  2. 内存设置 1. TaskManager内存模型

https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/

TaskManager 内存模型

1****、内存模型详解

  1. **JVM **特定内存:JVM本身使用的内存,包含JVM的metaspace和over-head

1)JVM metaspace:JVM元空间

   taskmanager.memory.jvm-metaspace.size,默认256mb

2)JVM over-head执行开销:JVM执行时自身所需要的内容,包括线程堆栈、IO、编译缓存等所使用的内存。

 taskmanager.memory.jvm-overhead.fraction,默认0.1

   taskmanager.memory.jvm-overhead.min,默认192mb

   taskmanager.memory.jvm-overhead.max,默认1gb

总进程内存*fraction,如果小于配置的min(或大于配置的max)大小,则使用min/max大小

  1. 框架内存:Flink框架,即TaskManager本身所占用的内存,不计入Slot的资源中。

堆内:taskmanager.memory.framework.heap.size,默认128MB

堆外:taskmanager.memory.framework.off-heap.size,默认128MB

  1. Task****内存:Task执行用户代码时所使用的内存

堆内:taskmanager.memory.task.heap.size,默认none,由Flink内存扣除掉其他部分的内存得到。

堆外:taskmanager.memory.task.off-heap.size,默认0,表示不使用堆外内存

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

堆外:taskmanager.memory.network.fraction,默认0.1

     taskmanager.memory.network.min,默认64mb

     taskmanager.memory.network.max,默认1gb

Flink***内存fraction,如果小于配置的min(或大于配置的max)大小,则使用min/max大小

  1. 托管内存:用于RocksDB State Backend 的本地内存和批的排序、哈希表、缓存中间结果。

堆外:taskmanager.memory.managed.fraction,默认0.4

taskmanager.memory.managed.size,默认none

如果size没指定,则等于Flink内存*fraction

2****、案例分析

基于Yarn模式,一般参数指定的是总进程内存,taskmanager.memory.process.size,比如指定为4G,每一块内存得到大小如下:

(1)计算Flink内存

   JVM元空间256m

   JVM执行开销: 4g*0.1=409.6m,在[192m,1g]之间,最终结果409.6m

   Flink内存=4g-256m-409.6m=3430.4m

(2)网络内存=3430.4m*0.1=343.04m,在[64m,1g]之间,最终结果343.04m

(3)托管内存=3430.4m*0.4=1372.16m

(4)框架内存,堆内和堆外都是128m

(5)Task堆内内存=3430.4m-128m-128m-343.04m-1372.16m=1459.2m

所以进程内存给多大,每一部分内存需不需要调整,可以看内存的使用率来调整。

标签: flink 大数据

本文转载自: https://blog.csdn.net/qq_31780525/article/details/136134753
版权归原作者 龙骨 所有, 如有侵权,请联系我们删除。

“[ 2024春节 Flink打卡 ] -- 优化(draft)”的评论:

还没有评论