【大数据】Flink 内存管理(一):设置 Flink 进程内存

Flink 内存管理(一):设置 Flink 进程内存

  • 1.配置 Total Memory
  • 2.JVM 参数
  • 3.根据比例限制的组件(Capped Fractionated Components)

Apache Flink 通过严格控制各种组件的内存使用,在 JVM 上提供高效的工作负载。虽然社区努力为所有配置提供合理的默认值,但用户在 Flink 上部署的应用程序种类繁多,这意味着这并非总是可行。为了向用户提供最大的生产价值,Flink 允许对集群内的内存分配进行高级和精细调整。

1.配置 Total Memory

Flink JVM 进程的总内存Flink 应用程序消耗的内存Total Flink Memory)和 JVM 进程消耗的内存 组成。

在这里插入图片描述
在 Flink 中设置内存的最简单方法是配置以下两个选项之一:

组件Option for TaskManagerOption for JobManager
Total Flink memorytaskmanager.memory.flink.sizejobmanager.memory.flink.size
Total process memorytaskmanager.memory.process.sizejobmanager.memory.process.size
  • 其余内存组件将根据默认值或附加配置选项自动调整。
  • 配置 Flink 总内存(Total Flink Memory)更适合独立部署,因为在这种情况下,您需要声明给 Flink 本身分配多少内存。Flink 总内存分为 JVM 堆内存JVM Heap)和 堆外内存Off-heap Memory)。
  • 如果配置总进程内存(Total Process Memory),则表示应为 Flink JVM 进程分配多少内存。对于容器化部署,它对应于所请求容器的大小。

另一种设置内存的方法是配置总 Flink 内存所需的内部组件,这些组件针对具体的 Flink 进程。

必须使用上述三种方法之一配置 Flink 的内存(本地执行除外),否则 Flink 启动将失败。这意味着必须明确配置以下选项子集之一,这些子集没有默认值:

for TaskManagerfor JobManager
taskmanager.memory.flink.sizejobmanager.memory.flink.size
taskmanager.memory.process.sizejobmanager.memory.process.size
taskmanager.memory.task.heap.sizetaskmanager.memory.managed.sizejobmanager.memory.heap.size

⭕ 不建议明确配置总的进程内存(Total Process Memory)和总的 Flink 内存(Total Flink Memory)。这可能会因潜在的内存配置冲突而导致部署失败。配置其他内存组件也需要谨慎,因为可能会产生更多的配置冲突。

2.JVM 参数

Flink 在启动进程时,会根据配置或导出的内存组件大小,显式添加以下与内存相关的 JVM 参数。

JVM 参数Value for TaskManagerValue for JobManager
-Xmx and -XmsFramework + Task Heap MemoryJVM Heap Memory (Ⅰ)
-XX:MaxDirectMemorySizeFramework + Task Off-heap (Ⅱ) + Network MemoryOff-heap Memory (Ⅱ),(Ⅲ)
-XX:MaxMetaspaceSizeJVM MetaspaceJVM Metaspace
  • (Ⅰ)请记住,根据所使用的 GC 算法,您可能无法使用全部堆内存。有些 GC 算法会为自己分配一定量的堆内存。这将导致堆指标返回不同的最大值。
  • (Ⅱ)请注意,用户代码中的本地非直接内存使用也可以作为堆外内存的一部分。
  • (Ⅲ)只有设置了相应的 jobmanager.memory.enable-jvm-direct-memory-limit 选项,才会为 JobManager 进程添加 JVM 直接内存限制。

3.根据比例限制的组件(Capped Fractionated Components)

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

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

这些组件的大小必须始终介于最大值和最小值之间,否则 Flink 启动将失败。最大值和最小值都有默认值,也可以通过相关的设置来显式设置。

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

那么 JVM Overhead 将是 1000 M B × 0.1 = 100 M B 1000MB\ ×\ 0.1 = 100MB 1000MB × 0.1=100MB,在 64 − 128 M B 64 - 128MB 64128MB 范围内。

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

如果没有明确配置组件内存,那么 Flink 将根据总内存使用比例来计算内存大小。计算值的上限为相应的最小/最大选项。例如,如果只设置了以下内存选项:

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

那么 JVM Overhead 将为 128 M B 128MB 128MB,因为根据比例得出的大小为 100 M B 100MB 100MB,小于最小值。

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

  • total Process memory = 1000 M B 1000MB 1000MB
  • task heap = 100 M B 100MB 100MB
  • JVM Overhead min = 64 M B 64MB 64MB
  • JVM Overhead max = 256 M B 256MB 256MB
  • JVM Overhead fraction = 0.1 0.1 0.1

进程内存总量的所有其他部分都有默认值,包括默认 Managed Memory 分数(或 JobManager 中的 Off-heap Memory)。这样,JVM Overhead 就不是比例( 1000 M B × 0.1 = 100 M B 1000MB × 0.1 = 100MB 1000MB×0.1=100MB),而是总进程内存的其余部分,要么在 64 − 256 M B 64 - 256MB 64256MB 范围内,要么失败。

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

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

相关文章

全面解析企业财务报表系列之四:财务报表的真实性和可靠性

全面解析企业财务报表系列之四:财务报表的真实性和可靠性 一、什么是会计方法二、选择会计方法三、会计方法的重要性四、会计报表常用的造假手段五、财务报表经常被遗漏的重要事件六、财务报告造假的资信敏感性七、财务报告审计的重要性八、审计报告 一、什么是会计…

微信小程序商城-兜点零食

微信小程序商城 【微信小程序商城-兜点零食】 小程序采用uniappvue开发,后台djangopython开发,模块化方便二次开发 1、具备商城完整功能,包括在线下单、支付、订单跟踪、物流查询; 2、具备社交化分享功能,为用户提供分…

2024年数学建模美赛详细总结以及经验分享

前言: 本文记录与二零二四年二月六日,正好今天是数学建模结束,打算写篇文章记录一下整个过程,以及一些感受、还有经验分享。记录这个过程的原因就是我在赛前,在博客上找了很久,也没有像我这么类似记…

基于事件触发机制的孤岛微电网二次电压与频率协同控制MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 本模型质量非常高,运行效果完美。本模型为4机并联孤岛系统,在下垂控制的基础上加入二次控制,二次电压与频率协同控制策略利用事件触发的方法来减少控制器的更新次数。该方法…

easyui 手风琴Accordion 面板的高度设置

今天接到一个新的小需求,如下图,当预算表单只有一个时,要求不显示预算表单这块的内容。 考虑到页面创建时用到了表单的回调和点击方法,所以不能单纯的移除,移除右侧表格的创建会报错,所以只能隐藏。 隐藏…

Docusaurus框架——快速搭建markdown文档站点介绍sora

文章目录 ⭐前言⭐初始化项目💖 创建项目(react-js)💖 运行项目💖 目录文件💖 创建一个jsx页面💖 创建一个md文档💖 创建一个介绍sora的文档 ⭐总结⭐结束 ⭐前言 大家好&#xff0…

劫持已经存在的DLL

这里找到一个成功加载的 这里先把原来程序正常的dll改名为libEGL1.dll,然后将我们自己的dll改名为libEGL.dll 然后再重新执行程序,这里同样是弹出了窗口

QEMU源码全解析 —— virtio(20)

接前一篇文章: 上回书重点解析了virtio_pci_modern_probe函数。再来回顾一下其中相关的数据结构: struct virtio_pci_device struct virtio_pci_device的定义在Linux内核源码/drivers/virtio/virtio_pci_common.h中,如下: /* O…

centos7 docker 安装

1.卸载之前docker环境 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docke…

Sora-OpenAI 的 Text-to-Video 模型:制作逼真的 60s 视频片段

OpenAI 推出的人工智能功能曾经只存在于科幻小说中。 2022年,Openai 发布了 ChatGPT,展示了先进的语言模型如何实现自然对话。 随后,DALL-E 问世,它利用文字提示生成令人惊叹的合成图像。 现在,他们又推出了 Text-t…

bat脚本进程停止与启动

在Windows操作系统中,批处理(Batch)脚本是一种常见的自动化脚本工具,通过BAT文件来执行一系列DOS命令。通过BAT脚本,我们可以轻松地控制进程的启动和停止。 一、进程停止 在BAT脚本中,要停止一个进程&…

如何设计一个数模混合芯片?

一、如何设计一个数模混合芯片? 根据需求功能设计数模混合芯片的架构是一个多步骤的过程。以下是一些关键步骤和考虑因素: 需求分析:首先,需要明确数模混合芯片的功能需求。这包括确定模拟电路和数字电路的具体需求,以…

Stable Diffusion 3 发布,AI生图效果,再次到达全新里程碑!

AI生图效果,再次到达全新里程碑! Prompt:Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says "Stable Diffusion 3" made out of colorful energy 提示(意译…

靡语IT:JavaScript函数

目录 一、基本概念 二、函数的声明和调用: 1、创建函数: ​编辑 2 、函数调用: 3、函数参数: 三、全局变量和局部变量 1、局部JavaScript 变量 2 、全局 JavaScript 变量 四、arguments 对象: 五、return 作用 六、嵌…

172基于matlab的MPPT智能算法

基于matlab的MPPT智能算法,通过细菌觅食进行优化。算法引入了趋向性操作,用以进行局部范围内的最优寻找;引入了复制操作,用以避免种群更新盲目随机性,加快了算法的收敛速度;引入了迁徙操作用以避免算法陷入…

【深度学习笔记】卷积神经网络——填充和步幅

填充和步幅 在前面的例子 fig_correlation中,输入的高度和宽度都为 3 3 3,卷积核的高度和宽度都为 2 2 2,生成的输出表征的维数为 2 2 2\times2 22。 正如我们在 sec_conv_layer中所概括的那样,假设输入形状为 n h n w n_h\tim…

【Flink精讲】Flink组件通信

主要指三个进程中的通讯 CliFrontendYarnJobClusterEntrypointTaskExecutorRunner Flink内部节点之间的通讯使用Akka,比如JobManager和TaskManager之间。而operator之间的数据传输是利用Netty。 RPC是统称,Akka,Netty是实现 Akka与Ac…

Java实现毕业生追踪系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登陆注册模块2.2 学生基本配置模块2.3 就业状况模块2.4 学历深造模块2.5 信息汇总分析模块2.6 校友论坛模块 三、系统设计3.1 用例设计3.2 实体设计 四、系统展示五、核心代码5.1 查询我的就业状况5.2 初始化就业状况5.…

蜂窝物联网咖WiFi认证解决方案

项目背景 随着目前网咖模式越来越流行,给网吧部署一套无缝漫游的WIFI网络势在必行。同时,网吧无线准入的验证码在客户机上面进行更新,以防周边的人员进行蹭网,损失网吧的外网带宽。 01 需求分析 1. 网吧服务区域全部覆盖无盲区…

FastJson中AutoType反序列化漏洞

文章目录 1、频繁出现的反序列化漏洞2、parse()及parseObject()3、AutoType及安全校验3.1 AutoType安全校验3.2 AutoType黑名单机制3.3 SafeMode安全机制3.4 攻击思路4、反序列化攻击模拟4.1 TemplatesImpl攻击调用链路4.2 攻击类Translet生成4.3 构造攻击JSON串4.4 攻击模拟5、…