flink 内存配置(一):设置Flink进程内存

Apache Flink通过严格控制各个组件的内存使用,在JVM之上提供了高效的工作负载。虽然Flink社区努力为所有配置提供合理的默认值,但由于用户部署在Flink上的应用范围很广,这并不总是可行的。为了给用户提供最大的生产价值,Flink支持对集群内的内存分配进行高层和细粒度的调优。
下面进一步描述的内存配置适用于1.10版本之后的TaskManager进程和1.11版本之后的JobManager进程。

1. 配置 Total Memory

Flink JVM进程的总进程内存(Total Process Memory)由Flink应用程序消耗的内存(Flink总内存即Total Flink Memory)和运行该进程的JVM消耗的内存组成。Flink总内存消耗包括JVM堆和非堆(直接内存或本地内存)内存的使用。如下图:

在Flink中设置内存最简单的方法是配置以下两个选项中的一个:

ComponentOption for TaskManagerOption for JobManager 
Total Flink memorytaskmanager.memory.flink.sizejobmanager.memory.flink.size
Total process memorytaskmanager.memory.process.sizejobmanager.memory.process.size

其余的内存组件将根据默认值或额外配置的选项自动调整。请参阅后面章节如何设置TaskManager和JobManager内存的其他组件。

对于本来就需要声明给Flink占用多少内存的standalone deployments部署方式来说,配置Flink总内存更合适。Flink总内存分为JVM堆内存和堆外内存。原因在于:总进程内存无关紧要,因为它也不会受控于yarn或k8s。

而对于容器化部署方式(yarn或k8s)来说,配置Flink JVM进程的总进程内存是更合适,他的大小对应于容器(container)的大小。

设置内存的另一种方法是配置Flink总内存里的各个具体组件的内存大小。具体配置见2和3.

上面一共说了3种配置方法:1是配置Total process memory;2是配置Total Flink memory;3是具体配置 Total Flink memory里各个组件的具体内存大小。即如下,必须显式的配置以上三种里的一种,不然flink就会启动失败。当然也不建议同时配置Total process memory和Total Flink memory,容易引发内存配置的冲突,而导致启动失败,配置其他内存组件也需要谨慎,因为它可能产生进一步的配置冲突。

for TaskManager:for JobManager:
taskmanager.memory.flink.sizejobmanager.memory.flink.size
taskmanager.memory.process.sizejobmanager.memory.process.size

taskmanager.memory.task.heap.size

and taskmanager.memory.managed.size

jobmanager.memory.heap.size

2. JVM参数

flink提供了以下jvm参数配置:

JVM ArgumentsValue for TaskManagerValue for JobManager
-Xmx and -XmsFramework + Task Heap MemoryJVM Heap Memory (*)
-XX:MaxDirectMemorySize
(always added only for TaskManager, see note for JobManager)
Framework + Task Off-heap (**) + Network MemoryOff-heap Memory (**),(***)
-XX:MaxMetaspaceSizeJVM MetaspaceJVM Metaspace

说明:

(*)请记住,根据所使用的GC算法,您可能无法使用全部堆内存。有些GC算法会为自己分配一定数量的堆内存。这将导致堆监控指标返回不同的最大值。
(**)请注意,用户代码中的本地非直接内存使用也可以作为堆外内存的一部分。
(***)只有设置了相应的 jobmanager.memory.enable-jvm-direct-memory-limit 选项,才会为 JobManager 进程添加 JVM 直接内存限制。

3. 有比例限制的组件

本节将介绍一些选项的配置细节,这些选项可以是其他内存大小的一部分比值(即乘以fraction参数),同时受到 最小 - 最大范围 的限制,例如:

  • JVM Overhead 可以是总进程内存的一部分。
  • Network Memory可以是 Flink 总内存的一部分(仅适用于 TaskManager)。

这些组件的大小必须在最大值和最小值之间,否则Flink启动将失败。最大值和最小值有默认值,或者可以通过相应的配置选项显式设置。例如,如果你只设置以下内存选项:

  • total Process memory = 1000MB,
  • JVM Overhead min = 64MB,
  • JVM Overhead max = 128MB,
  • JVM Overhead fraction = 0.1

然后JVM Overhead值就是 1000MB x 0.1 = 100MB, 在64-128MB范围之间。

注意,如果你配置相同的最大值和最小值,它会有效地固定大小为该值。

如果不显式配置组件内存,Flink会根据总内存计算出内存大小。计算值由相应的min/max选项限制。例如,如果只设置了以下内存选项:

  • total Process memory = 1000MB,
  • JVM Overhead min = 128MB,
  • JVM Overhead max = 256MB,
  • JVM Overhead fraction = 0.1

那么 JVM Overhead 将是128MB,因为由fraction比例得出的大小是100MB,小于最小值。

如果总内存及其其他组成部分的大小已经定义,那么这个比例也可能被忽略。在这种情况下,JVM Overhead就是总内存的剩余部分。派生值仍然必须在其最小/最大范围内,否则配置将失败。例如,假设只设置了以下内存选项。

  • total Process memory = 1000MB,
  • task heap = 100MB, (similar example can be for JVM Heap in the JobManager)
  • JVM Overhead min = 64MB,
  • JVM Overhead max = 256MB,
  • JVM Overhead fraction = 0.1

进程总内存的所有其他组件都有默认值,包括默认 Managed Memory 分数(或 JobManager 中的 Off-heap Memory)。那么JVM Overhead 不是这个部分(1000MB x 0.1 = 100MB),而是整个进程内存的剩余部分,这些部分要么在64-256MB范围内,要么失败。

参考网址:

https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/deployment/memory/mem_setup/

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ssm037物流管理系统设计与实现+jsp(论文+源码)_kaic

毕 业 设 计(论 文) 题目:物流管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本物流管理系统就是在这…

扩展卡尔曼滤波(EKF)的限制

当f (x)或h (x)接近线性时,EKF在许多实际问题上表现良好。然而,它在高度非线性的区域中失败了 EKF的概念是基于模型的线性化而提出的。EKF估计包括线性化误差。线性化误差取决于相对于传播的不确定度的函数的非线性度,如下图所示。 图13.13…

【ChatGPT】搜索趋势分析

【ChatGPT】搜索趋势分析 为了分析 ChatGPT 在过去一年的流行趋势,我们可以查看 Google Trends 的数据 安装依赖pytrends pip install pytrends运行以下 Python 脚本 import pandas as pd import matplotlib.pyplot as plt from pytrends.request import TrendR…

ctfshow——web(总结持续更新)

文章目录 1、基础知识部分2、php伪协议2.1 php://input协议2.2 data://text/plain协议 3、webshell连接工具3.1 蚁剑连接一句话木马 4、各个web中间件重要文件路径4.1 Nginx 5、sqlmap使用6、php特性6.1 md5加密漏洞 7、TOP 10漏洞7.1 SQL注入 1、基础知识部分 识别base64编码…

未来已来,软件行业的下一个风口在哪里?

引言 随着技术的迅猛发展,软件行业正在不断迎来新的机遇和挑战。在这个充满活力和变革的时代,企业和开发者们纷纷寻找下一个可能改变游戏规则的风口。那么,软件行业的下一个风口在哪里?让我们一同探索未来的潜在趋势与创新方向。 …

Python批量查找包含多个关键词的PDF文件

在信息爆炸的时代,数据管理变得愈发重要。U盘作为一种便携式存储设备,常常承载着我们大量的个人和工作数据。然而,随着文件数量的增加,在U盘中快速找到特定文件常常成为一个令人头疼的难题。我们通常可以采用everything来快速查找…

python网络爬虫基础:requests库的应用

Requests 库是在 urllib 的基础上开发而来,相比之下更加简洁优美,在编写爬虫程序时应用较为广泛。注意,本文更偏于程序实现,具体各个字段、参数的解释详见本专栏其他博文(后续看情况更新)。闲话少说&#x…

新能源汽车火灾应急处置程序

摘要:新能源汽车在人们的日常生活中被广泛应用,但其消防安全问题也逐渐凸显。本文分析了新能源汽车的起火原因、燃烧危害性,并着重阐述了新能源汽车发生火灾后消防应急处置程序及应对措施等。 关键词:新能源汽车;火灾…

双十一买什么?便宜又好用的数码好物分享

​每年双十一大促期间,许多平时想买但又感觉有些贵的数码好物都会降至最低价格,此时入手岂不美哉,还犹豫就只能等明年了。也有很多小伙伴不知道该入手些什么数码好物,接下来我就给大家盘点几款整体使用下来还不错的数码好物。 长…

【矩阵理论常见符号说明】

矩阵理论常见符号说明 参考链接 【矩阵理论/刘启明主编. 北京:国防出版社】

11.Node.js API接口

八、API接口 8.1 json-server工具 1)安装json-server npm i -g json-server2)示例 //students.json {"student":[{"id":1,"name":"sally","age":18,"gender":"女"},{"id":2,&…

Linux与Windows中的流量抓取工具:wireshark与tcpdump

1. wireshark(windows上主要用到的流量分析工具) 下载安装,安装到本地(安装到虚拟机可能抓不到包) 下载地址 1.1. 数据报文字段含义 source:源IP destination:目的IP protocol:协…

DevExpress中文教程 - 如何使用AI模型检查HTML编辑中的语法?

DevExpress .NET MAUI多平台应用UI组件库提供了用于Android和iOS移动开发的高性能UI组件,该组件库包括数据网格、图表、调度程序、数据编辑器、CollectionView和选项卡组件等。 目前许多开发人员正在寻找多种方法将AI添加到解决方案中(这通常比想象的要…

Django+Vue智慧分析居家养老系统统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者&…

400G光模块的3种封装(QSFP-DD、OSFP、CFP8)

400G光模块封装的趋势 光模块封装形式具有三个共同特点:外形小巧、功耗低、可与所有系统供应商互操作。了解 100G光模块市场的发展将有助于我们理解400G技术的引入。服务提供商需要可插拔光模块来实现长距离和专用技术,例如相干检测。数据中心团队需要一…

基于SSM+微信小程序的社团登录管理系统(社团1)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 2、项目技术 3、开发环境 4、功能介绍 1、项目介绍 基于SSM微信小程序的社团登录管理系统实现了管理员及社团、用户。 1、管理员实现了首页、用户管理、社团管理、社团信息管理、社…

宝塔FTP服务配置结合内网穿透实现安全便捷的远程文件管理和传输

文章目录 前言1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 前言 本文主要介绍宝塔FTP文件传输服务如何搭配内网穿透工具,实现随时随地远程连接局域网环境搭建的宝塔FTP文件服务并进行文件…

SpringBoot旋律:打造现代Web音乐平台

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理音乐网站的相关信息成为必然。开发合适的音…

labview学习总结

labview学习总结 安装labview的特点一、图形化编程范式二、并行执行机制三、硬件集成能力四、应用领域优势五、开发效率六、系统集成能力**labview基本组成示意图****常用程序结构图解**结语 基础知识介绍界面前后面板的概念平铺式和层叠式 帧的概念结构类型顺序结构for循环whi…

AI在医学领域:一种用于肩部CT扫描的新型深度学习框架

肩关节骨关节炎(OA)是一种常见的慢性退行性关节疾病,通常与老化相关的磨损有关,但也可能由创伤、劳损或退变等因素引起。其主要症状包括肩关节疼痛、肿胀、活动受限和弹响等。肩关节骨关节炎的高危因素包括既往肩部手术、创伤史、…