Apache Flink内存模型

Flink 内存模型
  • 大数据中所有开源的框架都会使用到JVM,不如,MapReduce,Storm,Spark等,这些计算框架处理数据过程中涉及到将大量数据存储到内存中,此时如果内存管理过渡依赖JVM,会出现java对象存储密度低导致内存使用率低以及垃圾回收导致的系统不稳定问题,这极大影响了系统的性能和稳定性。
  • Flink也是计算框架,计算过程中同样也是基于JVM,但是Flink实现了内存管理,即脱离JVM堆内存进行管理,统一且有效的管理堆内存和堆外内存,确保大规模数据处理不会因为GC等问题造成系统不稳定。
Flink内存模型图解
  • Flink 1.10版本以后为了满足更细粒度以及灵活的内存管理,升级了内存模型,调整后内存模型如下图,而且Flink中计算主要存在于TaskManager节点,这里说的Flink内存模型也就是TaskManager的内存模型,JobManager的内存模型与TaskManager的内存模型类似
    在这里插入图片描述

  • 如上图,Flink总内存(Total Process Memory)包含了Flink总内存(Total Flink Memory) 和JVM特定内存,Flink总内存又包括JVM堆内存(JVM Heap),托管内存(Managed Momory),直接内存(Direct Memory),下面我们分别介绍每一部分的功能以及Flink提供的参数配置

Flink 总内存(Total Flink Memory)
  • TaskManager 进程占用的所有与Flink相关的内存,不包括JVM特定内存部分,包含6个部分内存(Framework堆内存, Task堆内存,托管内存,Framework非堆内存,Task非堆内存, Network),关于Flink Framework 和Flink Task 使用的内存 既有堆内内存也有堆外内存,托管内存和Network使用的仅仅是堆外内存。
  • Flink 总内存配置参数根据不同的部署场景不同:taskmanager.memory.flink.size 或者 taskmanager.memory.process.size(容器部署指定参数),无默认值,需要用户指定。
Flink 堆内存(JVM Heap)
  • Flink 堆内存就是JVM堆内存(JVM Heap),分为Framework堆内存(Framework Heap)和Task堆内存(Task Heap),其中Framework主要用于Flink 框架本身需要的内存空间,Task 堆内存则用于Flink算子用户代码的执行,也被称为TaskExecutor使用的内存,两者主要区别用于是否将内存计入Slot计算资源中,Framework 内存不会将内存分配给Slot使用,Task 堆内存会分配给Slot。
Framework 堆内存(Framework Heap)
  • Framework堆内存配置参数为:taskmanager.memory.framework.heap.size,该值默认为 128M。
Task 堆内存(Task Heap)
  • Task堆内存配置参数为:taskmanager.memory.task.heap.size,该值没有默认值,如果没有指定会自动用Flink总内存 减去 Framework堆内存(Framework Heap),减去托管内存(Managed Memory),减去Framework 非堆内存(Framework Off-Heap),减去Task非堆内存(Task Off-Heap),减去 NetWork,剩下的内存就是Task堆内存。
Flink 非堆内存(Off-Heap Memory)
  • 非堆内存也可以叫做堆外内存,更准去来说是大部分的堆外内存,包含了托管内存(Managed Memory),直接内存(Direct Memory)两部分
托管内存(Menaged Memory)
  • 托管内存是Flink 负责分配和管理的本地堆外内存,在流处理作业中用于RocksDBstateBackend状态存储后段,在批处理作业中用于排序,哈希表,缓存中间结果。
  • 托管内存(Menaged Memory)配置参数油如下两个:
    • taskmanager.memory.managed.fraction,默认值0.4,如果未显式指定托管内存大小,则使用 总Flink内存的百分比作为托管内存。
    • taskmanager.memory.managed.size,无默认值,一般也不指定,而是按照比例来推定,更加灵活。
直接内存(Direct Memory)
  • 直接内存 分为 Framework 非堆内存(Framework Off-Heap),Task 非堆内存(Task Off-Heap) 和Network 三部分,直接内存主要作用是减少GC压力,提升性能效率。
    • Framework 非堆内存(Framework Off-Heap)
  • Framework 非堆内存即waskexxecutor的Framework堆外内存大小,不会分配给slot,配置参数为:taskmanager.memory.framework.off-heap.size,默认值128M。
    • Task 非堆内存(Task Off-Heap)
  • Task 非堆内存,配置参数taskmanager.memory.task.off-heap.size,默认值为0,即不使用。
    • Network
  • Network内存存储空间主要用于 给予Netty进行网络数据交换数据传输的本地缓存,例如:TaskManager之间Shuffle,广播,与外部组件的数据传输。Network的配置相关参数有3个,分别如下:
    • taskmanager.memory.network.min:网络缓存的最小值,默认64MB;
    • taskmanager.memory.network.max:网络缓存的最大值,默认1GB;
    • taskmanager.memory.network.fraction: 网络混存占flink总内存manager.memory.flink.size的比例,默认值0.1,如果根据比例算出的内存量比最小值小或者比最大值大,就会限制到最小值或者最大值。
JVM特定内存
  • JVM特定内存是JVM堆外内存的另一小部分内存,其不再Flink总内存范围之内,包括jvm元空间(JVM Metaspace) 和JVm Overhead两部分,其中JVM元空间存储JVM加载类的元数据,加载的类越多,需要的内存空间越大,JVM Overhead 则主要用于其他JVM开销,例如代码缓存,线程栈等。

  • Flink 中将内存分成不同的区域,实现了更加精准的内存控制,在使用Flink过程中一般指定Flink总内存(Total Flink Memory,taskmanager.memory.flink.size)即可,其他额外指定JVM内存参数不需额外指定,如果需要根据Flink程序做一些调整建议有限调整fraction 比例参数,例如:网络缓存占比taskmanager.memory.network.fraction(根据网络流量大小调节)与托管内存占比

  • taskmanager.memory.managed.fraction(根据RocksDB状态大小调节),这样做可以间接影响任务内存的配额,需要特别注意的是如果手动指定较多的固定参数哼可能出现内存配额冲突导致的Flink程序部署失败。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/409090.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docke进阶---镜像迁移、容器的ip地址、端口映射和持久化

1.镜像的迁移 1.镜像打包 #查看镜像有一个centos的镜像 [rootdocker0 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 2 years ago 231MB 3查看帮助文件 docker --help save Save one or more…

stm32-SD卡实验

1. SD简介 SD卡,Secure Digital Card,称为安全数字卡(安全数码卡)。 SD卡系列主要有三种:SD卡(full size)、MiniSD卡和MicroSD卡(原名 TF卡)。 特点:容量大、高安全性、体积小、传…

打包资料优化目录

这篇文章主要写一下这一次更新的几个地方,有对原来的代码及模型进行优化的部分,也有新增加的代码和模型,我就把几个比较典型的给列了出来。但是还有好多的更新没有在下面展示出来,因为一个个展示出来太复杂了。如果你对更新的内容…

暑期算法训练

目录 A.糖果(Candy) B.小红的数组重排 C.牛牛与LCM D.子串 E.勤奋的杨老师 F.清楚姐姐跳格子 G.方块 I H.PUBG A.糖果(Candy) 思路 :贪心,为了使操作数最少,我们要尽可能的先吃第二个盒子里的糖果&#x…

UE5.4 - 下载和安装

一. 简介 虚幻引擎(Unreal Engine)是由 Epic Games 公司推出的一款功能强大的游戏开发引擎。它于 1998 年推出第一代,其口号是 “全球最开放、最先进的实时 3D 创作工具”。 虚幻引擎被广泛应用于游戏产业,创作出了众多知名的 3…

【工具类】Java优雅的将XML转为JSON格式、XML转JSON

Java优雅的将XML转为JSON格式、XML转JSON 1. 导入依赖1.1 Maven使用1.2 Gradle使用 2. 代码编写3.运行示例 1. 导入依赖 1.1 Maven使用 <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</vers…

黑神话悟空,高清壁纸、原画,游戏截图

黑神话悟空&#xff0c;高清壁纸、原画&#xff0c;游戏截图&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/cd17c05c4f33

【STM32】驱动LCD

没买LCD屏&#xff0c;没有上机实践&#xff0c;只是学习了理论。 大部分图片来源&#xff1a;正点原子HAL库课程 专栏目录&#xff1a;记录自己的嵌入式学习之路-CSDN博客 目录 1 屏幕接口 2 屏幕驱动的基本步骤 3 8080时序的各信号线 4 8080的读和写 5 屏…

二分查找算法:朴素二分+左右边界二分力扣实战应用

目录&#xff1a; 1、二分查找算法简介 2、算法原理及时间复杂度分析 2.1 朴素二分算法 3.2 查找左右边界的二分算法 3.2.1 查找左边界 3.2.2 查找右边界 3.3 时间复杂度分析 3、二分查找算法模版 3.1 朴素二分模版 3.2 查找左右边界的二分模版 4、算法应用【leetco…

考研数学暑期进度大调查,你掉队了吗?

现在已经8月&#xff0c;马上快9月份了&#xff0c;你的数学进度学到哪里啦&#xff1f; 我可不是“进度哥“&#xff0c;也不会营造焦虑&#xff0c;其实对于进度这个事情&#xff0c;我一直觉得是一个伪命题&#xff0c;因为很多同学一直鼓吹进度多快&#xff0c;结果最后考…

合宙LuatOS开发板使用说明——Air700ECQ

EVB-Air700ECQ-IO 开发板是合宙通信推出的基于 Air700ECQ 模组所开发的&#xff0c;包含电 源&#xff0c; SIM 卡&#xff0c;USB &#xff0c;天 线&#xff0c; 全 IO 引 出的最 小硬 件系 统。以 方便 用户 在设 计前期 对 Air700ECQ 模块进行性能评估&#xff0c;功能调试…

Hadoop集群运维管理

Hadoop集群运维管理 一、Hadoop 集群进程管理1.1 NameNode 守护进程管理1.2 DataNode 守护进程管理1.3 ResourceManager 守护进程管理1.4 NodeManager 守护进程管理 二、Hadoop 集群运维技巧2.1 查看日志2.2 清理临时文件2.3 定期执行负载均衡2.4 文件系统检查2.5 元数据备份 三…

Maven的一些相关知识【重修】《包括私服搭建!》

mvnrepository.com Maven 下载jar包的位置&#xff01; 【该部分有教程】 这是什么nb代码投稿视频-这是什么nb代码视频分享-哔哩哔哩视频 MAVEN 的私服搭建&#xff1a; https://zhuanlan.zhihu.com/p/520107316 2、maven私服搭建及应用&#xff08;下&#xff09;_哔哩…

SQL手工注入漏洞测试(PostgreSQL数据库)

判断注入点 and 12 判断回显点 order 不用 4 页面正常 order by 5 页面异常&#xff0c;得出只存在四个字段 测试回显位置 and 12 union select null,null,null,null and 12 union select null,null,null,null and 12 union select null,null,null,null and 12 union select…

如何在不格式化的情况下解锁 Android 智能手机密码

如果您忘记密码&#xff0c;您的 Android 移动设备将锁定您。发生这种情况时&#xff0c;通常可以通过恢复出厂设置来重新获得对设备的访问权限。可悲的是&#xff0c;这将导致所有数据丢失。下面列出的是解锁锁定的Android 手机而不会丢失任何个人数据的有效方法。 Android 手…

Open3D 近似点体素滤波(36)

Open3D 近似点体素滤波(36) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 这个算法也是体素滤波, 它保留的点是近似点,也就是新的点,原始点云中对应位置是不存在这些点的。其他的看着类似,下面是代码,滤波抽稀结果 二、算法实现 1.代码 代码如下(示例): …

Long Short-Term Memory

这篇论文总结的太抽象了&#xff0c;只是翻译了一遍。 &#xff08;我太笨了&#xff0c;如果把这个当我的入门读物&#xff0c;我觉着会把我折磨坏&#xff09; 递归神经网络的一个重要优点是它们在映射输入和输出序列时使用上下文信息的能力。不幸的是&#xff0c;对于标准的…

Chainlit接入FastGpt接口完美对接,实现全新的用户聊天界面

前言 由于fastgpt只提供了一个分享用的网页应用&#xff0c;网页访问地址没法自定义&#xff0c;虽然可以接入NextWeb/ChatGPT web等开源应用。但是如果我们想直接给客户应用&#xff0c;还需要客户去设置配置&#xff0c;里面还有很多我们不想展示给客户的东西怎么办&#xf…

[数据集][目标检测]街灯路灯检测数据集VOC+YOLO格式1893张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1893 标注数量(xml文件个数)&#xff1a;1893 标注数量(txt文件个数)&#xff1a;1893 标注…

数据结构(Java实现):链表习题

文章目录 1. 题目列表及链接2. 题目解析及代码2.1 删除链表中等于给定值 val 的所有节点2.2 反转一个单链表2.3 给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点2.4 输入一个链表&#xff0c;输出该…