Flink 内存模型各部分大小计算公式

Flink 的运行平台

如果 Flink 是运行在 yarn 或者 standalone 模式的话,其实都是运行在 JVM 的基础上的,所以首先 Flink 组件运行所需要给 JVM 本身要耗费的内存大小。无论是 JobManager 或者 TaskManager ,他们 JVM 内存的大小都是一样的,都是由 JVM metaspace 和 JVM overhead 组成的。metaspace 元空间的部分,保存 JVM 中 class 类等区域,然后 JVM overhead 是本地内存、垃圾回收等。

在 yarn 环境下,启动的启动程序为 YarnTaskExecutorRunner 入口类型。一个例子为


bigdata  30032 29862  2  2024 ?        3-07:08:13 /usr/bin/java 
-Xmx1664299798 
-Xms1664299798 
-XX:MaxDirectMemorySize=493921243 
-XX:MaxMetaspaceSize=268435456 
-Dlog.file=/path/to/container_e09_xx/taskmanager.log 
-Dlog4j.configuration=file:./log4j.properties 
-Dlog4j.configurationFile=file:./log4j.properties org.apache.flink.yarn.YarnTaskExecutorRunner 
-D taskmanager.memory.network.min=359703515b 
-D taskmanager.cpu.cores=2.0 
-D taskmanager.memory.task.off-heap.size=0b 
-D taskmanager.memory.jvm-metaspace.size=268435456b 
-D external-resources=none 
-D taskmanager.memory.jvm-overhead.min=429496736b 
-D taskmanager.memory.framework.off-heap.size=134217728b 
-D taskmanager.memory.network.max=359703515b 
-D taskmanager.memory.framework.heap.size=134217728b 
-D taskmanager.memory.managed.size=1438814063b 
-D taskmanager.memory.task.heap.size=1530082070b 
-D taskmanager.numberOfTaskSlots=2 
-D taskmanager.memory.jvm-overhead.max=429496736b 
--configDir . 
-Dblob.server.port=10751 
-Djobmanager.rpc.address=hadoop0010 
-Djobmanager.memory.jvm-overhead.min=429496736b 
-Dtaskmanager.resource-id=container_e09_1727170467339_0012_01_000004 
-Dweb.port=0 
-Djobmanager.memory.off-heap.size=134217728b 
-Dweb.tmpdir=/tmp/flink-web-ae106a66-21e0-410e-8c8a-2ea943474c5a 
-Dinternal.taskmanager.resource-id.metadata=hadoop0005:30445 
-Djobmanager.rpc.port=18745 
-Drest.bind-address=hadoop0010 
-Drest.address=hadoop0010 
-Djobmanager.memory.jvm-metaspace.size=268435456b 
-Djobmanager.memory.heap.size=3462817376b 
-Djobmanager.memory.jvm-overhead.max=429496736b

JobManager 的入口类是 YarnJobClusterEntrypoint ,一个例子是:

bigdata  12455 12391  0  2024 ?        06:56:25 /usr/bin/java 
-Xmx3462817376 -Xms3462817376 
-XX:MaxMetaspaceSize=268435456 
-Dlog.file=/path/to/application_xxx/container_xxx/jobmanager.log 
-Dlog4j.configuration=file:log4j.properties 
-Dlog4j.configurationFile=file:log4j.properties org.apache.flink.yarn.entrypoint.YarnJobClusterEntrypoint 
-D jobmanager.memory.off-heap.size=134217728b 
-D jobmanager.memory.jvm-overhead.min=429496736b 
-D jobmanager.memory.jvm-metaspace.size=268435456b 
-D jobmanager.memory.heap.size=3462817376b 
-D jobmanager.memory.jvm-overhead.max=429496736b

相关的配置参数是:

  1. -yjm 设置 JobManager 的大小。
  2. -ytm 设置 TaskManager 的大小。
  3. jobmanager.memory.process.size 和 taskmanager.memory.process.size 对应这 -yjm 和 -ytm 的大小。
  4. jobmanager.memory.jvm-overhead.fraction ,这个是设置 JVM overhead 的比例。
  5. taskmanager.memory.network.fraction ,network 部分的内存大小占比
  6. taskmanager.memory.managed.fraction, managed 占的比例大小。
    在这里插入图片描述
    上图是官方 TaskManager 的内存模型。下面按照配置来计算一下各部分的内存大小,看看是否和 YarnTaskExecutorRunner 启动命令中对应的内存大小相同。需要指出的是的使用资源平台是 yarn , -ytm 为 4 gb

先计算,JVM overhead = Math.max( taskmanager.memory.process.size0.1 , 192M), math.max( 41024 *0.1 , 192M) = 409.6 约等于 410 M

MVM metaspace 固定值 256

Network = (Taskmanager.memory.process.size - JVM metaspace - JVM overhead)0.1,(41024 - 256- 410 )*0.1= 343M

Framework off-heap 128M 固定支出。

Managed Memory =( taskmanager.memory.process.size - JVM metaspace - JVM overhead)0.4 , 还需要四舍五入, (41024 - 256- 410)*0.4 / 1024 = 13.4G

TaskHeap = taskmanager.memory.process.size - JVM metaspace - JVM Overhead - Network - Framewokr off-heap - Managed memory - Framework heap = (41024 - 256 - 410 - 343 - 128 - 1.341024 - 128)/1024 = 1.42 G

YarnTaskExecutorRunner 的启动命令中,-Xmx1664299798 -Xms1664299798 两个参数设置的是 heap memory 的大小, 1664299798/1024/1024/1024 = 1.55 G ,task heap + framework heap = 1.42G + 128M = 1.42 + 0.125 = 1.55G

-XX:MaxDirectMemorySize=493921243 代表了 framework off-heap + task off-heap + network off-heap = 128M + 343M = 0.46G , 493921243/1024/1024/1024 = 0.46 G 。
-XX:MaxMetaspaceSize=268435456 268435456/1024/1024 = 256 M

-D taskmanager.memory.network.min=359703515b 这个是 network 的最小值。
-D taskmanager.cpu.cores=2.0 设置 taskmanager core 的数量
-D taskmanager.memory.task.off-heap.size=0b ,这个和结果是一致的 task off-head 就是 0 。
-D taskmanager.memory.jvm-metaspace.size=268435456b , 这个与 -XX:MaxMetaspaceSize 的大小是一致的。
-D taskmanager.memory.jvm-overhead.min=429496736b ,这个 overhead 的最小值。
-D taskmanager.memory.framework.off-heap.size=134217728b , 这个是 fremework off-heap 的 128 M , 这个是固定大小。
-D taskmanager.memory.network.max=359703515b 这个是 network off-heap 的最大值
-D taskmanager.memory.framework.heap.size=134217728b 固定大小,128 M
-D taskmanager.memory.managed.size=1438814063b ,managed memory 的大小,计算得来的大小是 13.4G ,正好是 1438814063/1024/1024/1024 的大小。
-D taskmanager.memory.task.heap.size=1530082070b
-D taskmanager.numberOfTaskSlots=2 ,这个是每个 taskmanager slot 的个数。
-D taskmanager.memory.jvm-overhead.max=429496736b 这个是 overhead 的大小, 它是 410 M ,正好是429496736/1024/1024/1024 的大小。

所以对于 yarn 平台来说,要想了解 TM 和 JM 各部分内存的大小,只需要知道下面的参数的大小即可。

  1. -yjm
  2. -yjm
  3. jobmanager.memory.jvm-overhead.fraction ,这个是设置 JVM overhead 的比例。
  4. taskmanager.memory.network.fraction ,network 部分的内存大小占比
  5. taskmanager.memory.managed.fraction, managed 占的比例大小。

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

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

相关文章

学习数据结构(8)双向链表

1.双向链表的实现 双向链表一般指带头双向循环链表 (1)双向链表的声明 (2)双向链表的打印 (3)向内存申请节点 (4)初始化双向链表 或 (5)尾部插入 &#xf…

【漫话机器学习系列】088.常见的输出层激活函数(Common Output Layer Activation Functions)

在神经网络中,输出层(Output Layer) 的激活函数(Activation Function)直接决定了模型的输出形式,并影响损失函数的选择及训练效果。不同的任务类型(如分类或回归)需要使用不同的激活…

Python 鼠标轨迹 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

工业相机在工业生产制造过程中的视觉检测技术应用

随着技术不断发展以及工业4.0时代的到来,利用工业相机进行视觉检测技术已经成为制造业不可或缺的一部分。通过结合先进的计算机视觉、AI算法和自动化设备,工业视觉检测为生产线质量控制和效率提升提供了革命性的解决方案。 一、什么是工业视觉检测技术 …

了解网络层

目录 一、IP协议 二、地址管理 IP地址 概念 作用 格式 网段划分 三、路由选择 网络层要做的事情主要是两个方面: 地址管理:制定一系列的规则,通过地址,描述出网络上一个设备的位置。路由选择:网络环境比较复杂…

NO.11十六届蓝桥杯备战|if-else语句|嵌套if|悬空else|练习4道(C++)

if-else语句 if语句 if语句的语法形式如下: if ( 表达式 ) 语句;表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏ 0为假,⾮0表⽰真,也就是…

Json-RPC框架项目(一)

目录 1. 项目介绍: 2. 技术选择; 3. 第三方库介绍; 4. 项目功能; 5. 模块功能; 6. 项目实现: 1. 项目介绍: RPC是远程过程调用, 像调用本地接口一样调用远程接口, 进行完成业务处理, 计算任务等, 一个完整的RPC包括: 序列化协议, 通信协议, 连接复用, 服务注册, 服务发…

Discourse 创建和配置用户自定义字段

用户自定义字段能够让你在用户注册的是要求用户提供更多的信息。这些用户提供的信息可以在用户名片,用户摘要页面下显示,甚至还可以通过 Data Explorer plugin 插件进行查询。 本文能够帮助你对这些字段进行配置和设置。 添加一个用户字段 进入 Admin…

从零到一:我的元宵灯谜小程序诞生记

缘起:一碗汤圆引发的灵感 去年元宵节,我正捧着热腾腾的汤圆刷朋友圈,满屏都是"转发锦鲤求灯谜答案"的动态。看着大家对着手机手忙脚乱地切换浏览器查答案,我突然拍案而起:为什么不做一个能即时猜灯谜的微信…

【C++11】lambda和包装器

1.新的类功能 1.1默认的移动构造和移动赋值 原来C类中,有6个默认成员函数:构造函数/析构函数/拷⻉构造函数/拷⻉赋值重载/取地址重 载/const 取地址重载,最后重要的是前4个,后两个⽤处不⼤,默认成员函数就是我们不写…

Java企业电子招投标系统:Spring Cloud微服务架构-强化企业招采竞争力:电子化招投标平台助力效率与成本控制-支持二次开发

​在当今激烈的市场竞争环境下,企业规模的持续扩大使得招采管理变得日益重要,已成为企业提升核心竞争力的关键一环。为了实现更高效、更高质量的招采成果,我们设计了一套基于电子化平台的解决方案,旨在通过电子化招投标系统&#…

计算机毕业设计Spark+大模型知网文献论文推荐系统 知识图谱 知网爬虫 知网数据分析 知网大数据 知网可视化 预测系统 大数据毕业设计 机器学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

打家劫舍3

今天和打家讲一下打家劫舍3 题目: 题目链接:337. 打家劫舍 III - 力扣(LeetCode) 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。 除了 root 之外,每栋房子有且只有一个“父“…

指定路径安装Ollama

通过鼠标双击安装,默认会安装到C盘下,如果需要更换默认路径则可以通过命令的方式将Ollama安装到其他盘的某个目录下。 OllamaSetup.exe /DIR"D:\Ollama" #DIR指定安装路径 执行上述命令后,会弹出OllamaSetup.exe安装窗体界面&…

Linux:库

目录 静态库 动态库 目标文件 ELF文件 ELF形成可执行 ELF可执行加载 ELF加载 全局偏移量表GOT(global offset table) 库是写好的,成熟的,可以复用的代码 现实中每个程序都要依赖很多的基础的底层库,不可能都是从零开始的 库有两种…

心脏滴血漏洞复现(CVE-2014-0160)

漏洞范围: OpenSSL 1.0.1版本 漏洞成因: Heartbleed漏洞是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进 行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复 制到缓存当中再返回缓存内容,…

一文学会:用DeepSeek R1/V3 + AnythingLLM + Ollama 打造本地化部署的个人/企业知识库,无须担心数据上传云端的泄露问题

文章目录 前言一、AnythingLLM 简介&基础应用1.主要特性2.下载与安装3.配置 LLM 提供商4.AnythingLLM 工作区&对话 二、AnythingLLM 进阶应用:知识增强使用三、AnythingLLM 的 API 访问四、小结1.聊天模式2.本地存储&向量数据库 前言 如果你不知道Olla…

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 0基础…

探秘AES加密算法:多种Transformation全解析

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

html文件怎么转换成pdf文件,2025最新教程

将HTML文件转换成PDF文件,可以采取以下几种方法: 一、使用浏览器内置功能 打开HTML文件:在Chrome、Firefox、IE等浏览器中打开需要转换的HTML文件。打印对话框:按下CtrlP(Windows)或CommandP(M…