首页 > 系统相关 >Flink内存模型

Flink内存模型

时间:2022-10-15 10:55:26浏览次数:46  
标签:堆外 模型 Flink taskmanager 内存 JVM memory

一、内存布局

1、直观图

2、树状图

 二、内存解释

1、Flink使用的内存

(1)JVM堆上内存

  说明:堆上内存管理序列化之后的数据,如果需要处理的数据超出了内存限制,则会将部分数据存储到硬盘上。堆上内存在写磁盘或网络传输时至少需要一次内存复制。

  a.框架堆上内存Framework Heap Memory

    Flink框架本身所使用的内存,即TaskManager本身所占用的堆上内存,不计入Slot资源中

配置参数:taskmanager.memory.framework.heap.size=128MB,默认值128MB

  b.Task堆上内存Task Heap Memory

    Task执行用户代码时所使用的堆上内存

配置参数:taskmanager.memory.task.heap.size

(2)JVM堆外内存

  说明:使用堆外内存,可以将大量的数据保存在堆外,极大地减小堆内存,避免GC和内存溢出的问题。堆外内存在写磁盘或网络传输时是零拷贝。堆外内存是进程间共享的。即使JVM进程奔溃也不会丢失数据。堆上内存的使用、监控、调式简单,堆外内存出现问题后的诊断则较为复杂

  a.框架堆外内存Framework Off-Heap Memory

    Flink框架本身所使用的内存,即TaskManager本身所占用的堆外内存,不计入Slot资源。

配置参数:taskmanager.memory.framework.off-heap.size=128MB,默认值128MB

  b.Task堆外内存Task Off-heap Memory

    Task执行用户代码时所使用的堆外内存

配置参数:taskmanager.memory.task.off-heap.size=0,默认值为0

  c.网络缓冲内存Network Memory

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

配置参数:taskmanager.memory.network.[64/1024/0.1](min/max/fraction),默认min=64MB,max=1GB,fraction=0.1

  d.堆外托管内存Managed Memory

    Flink管理的堆外内存

配置参数:taskmanager.memory.managed.[size|fraction],默认值fraction=0.4

2、JVM本身使用的内存

(1)JVM元空间

  JVM元空间所使用的内存

配置参数:taskmanager.memory.jvm-metaspace=96m,默认值96MB

(2)JVM执行开销

  JVM在执行时自身所需要的内容,包括线程堆栈、IO、编译缓存等所使用的内存。

配置参数:taskmanager.memory.jvm-overhead=[min/max/fraction],默认min=192MB,max=1GB,fraction=01

3、总体内存

 (1)Flink使用内存

  Flink使用的内存包括Flink使用的堆上、堆外内存。

配置参数:taskmanager.memory.flink.size

(2)进程使用内存

  整个进程所使用的内存,包括Flink使用的内存和JVM使用的内存。

配置参数:taskmanager.memory.process.size

  JVM内存控制参数:

JVM堆上内存,使用-Xmx和-Xms控制
JVM直接内存,使用-XX:MaxDirectMemory控制。对于托管内存的,使用Unsafe.allocateMemory()申请,不受该参数控制
JVM Metaspace使用-XX:MaxMetaspaceSize控制

 

标签:堆外,模型,Flink,taskmanager,内存,JVM,memory
From: https://www.cnblogs.com/qq1035807396/p/16793599.html

相关文章

  • VGG模型-文献阅读笔记
    论文简介该论文提出深度神经网络的深度对于大规模图像识别模型的表现有显著提升。模型使用3*3的小型卷积过滤器和较小的卷积层步幅,并且其神经网络层数达到了16-19层。基于......
  • C/C++ 为什么要使用动态内存?
    为什么要使用动态内存?1.按需分配,根据需要分配内存,不浪费;2.被调用函数之外需要使用被调用函数内部的指针对应的地址空间;3.突破栈区的限制,可以给程序分配更多的内存......
  • C-模型压缩部署概述
    一,模型在线部署1.1,深度学习项目开发流程1.2,模型训练和推理的不同二,手机端CPU推理框架的优化三,参考资料一,模型在线部署深度学习和计算机视觉方向除了算法训练/研......
  • B-神经网络模型复杂度分析
    目录结构一,模型计算量分析二,模型参数量分析三,一些概念四,参考资料前言现阶段的轻量级模型MobileNet/ShuffleNet系列、CSPNet、RepVGG、VoVNet等都必须依赖于于具......
  • C++程序的内存分区
    1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量值等。2、堆区(heap):一般由程序员分配释放,随叫随到,挥之即走。3、全局/静态区(static):全局变量和静态变量的存储是......
  • linux查看内存&磁盘
    查看内存空间使用“free”命令可以查看服务器的内存空间,选项“-m”表示以MB(兆字节)的数据存储单位进行显示。执行结果如下所示:[root@localhost~]#free-m......
  • Flink Table Api(五)
    基础代码环境信息    //table api     flink三层API(processfunction api/datastream api/sql table api)    import org.apache.flink.streaming.a......
  • 使用Mask R-CNN模型实现人体关键节点标注
    摘要:在本案例中,我们将展示如何对基础的MaskR-CNN进行扩展,完成人体关键节点标注的任务。本文分享自华为云社区《使用MaskR-CNN模型实现人体关键节点标注》,作者:运气男孩......
  • Unity 在模型上展示标签UI
    voidUpdate(){this.transform.LookAt(Camera.main.transform);}   在主摄像机下设置一个子摄像机,主摄像机CullingMask去掉显示UI。子摄像机Cul......
  • Python在计算内存时应该注意的问题?
    我之前的​​一篇文章​​​,带大家揭晓了Python在给内置对象分配内存时的5个奇怪而有趣的小秘密。文中使用了​​sys.getsizeof()​​来计算内存,但是用这个方法计算时,可......