当前位置: 首页 > news >正文

FLINK内存管理解析,taskmanager、jobmanager

1、在 Flink 中设置内存的方法是配置以下两个选项之一:

1)Total Flink memory:taskmanager.memory.flink.size+jobmanager.memory.flink.size

2)Total process memory:taskmanager.memory.process.size+jobmanager.memory.process.size

1、flink内存包含以下部分,Total Process Memory总内存(taskmanager/jobmanager.process.size),等于Total Flink Memory内存(flink管理的内存taskmanager/jobmanager.flink.size)+jvm进程消耗内存(JVM Metaspace+JVM Overhead),即 flink 管理部分 jvm 内存,jvm自身也消耗一部分内存。

以下操作中,flink-conf.xml配置参数如下:

jobmanager.memory.heap.size: 128m

taskmanager.memory.flink.size: 1024m

taskmanager.memory.managed.fraction: 0.2

jobmanager.memory.jvm-overhead.min: 64m

taskmanager.memory.network.fraction: 0.1

2、指定 jobmanager 内存

① 当我们指定jobmanager内存:-yjm(jobmanager.process.size)=512m时,内存的分配流程如下:

JVM Heap:128M,根据配置参数(jobmanager.memory.heap.size)

JVM Metaspace默认值: 256M

Off-Heap Memory默认值:128M

JVM Overhead:0M=512M-128M-256M-128M

解释了报错:JobManager memory configuration failed: Derived JVM Overhead size (0 bytes) is not in configured JVM Overhead range [64.000mb (67108864 bytes), 1024.000mb (1073741824 bytes)]

可以看到报错中说JVM Overhead 内存为0,不在最小值最大值内,因为我们的配置中指定了jobmanager.memory.jvm-overhead.min: 64m,0<64m,肯定失败。

② 当我们指定-yjm(jobmanager.process.size)=1024m时,参考①中可以得出如下图的内存分配:

3、指定 taskmanager 内存

① 下图是指定了:-ytm(taskmanager.process.size)=2048m,taskmanager.memory.flink.size=1024m时的内存占用,即:

ytm=Total Process Memory=Total Flink Memory(taskmanager.memory.flink.size)+JVM Metaspace+JVM Overhead,我们发现这里有一个问题Total Flink Memory=1024m且JVM Metaspace+JVM Overhead=1024m,也就是我们指定taskmanager.process.size参数时,就不要指定taskmanager.memory.flink.size参数,否则会导致JVM Overhead被分配过大的内存造成浪费。

② 当我们不指定taskmanager.memory.flink.size参数时,taskmanager内存分配结果和分配方式:

JVM Metaspace(默认):256m

Jvm Overhead:2048 * 0.1(默认)=205m

Framework Heap(默认):128M

Managed Memory:(2048m-256m(JVM Meataspace)-205m(Jvm Overhead))*0.2=317m

Network:(2048m-256m(JVM Meataspace)-205m)*0.1=159m

Framework Off-Heap(默认):128m

Task Heap:2048-(其他所有:256m+205m+128m+317m+159m+128m)=855m

http://www.lryc.cn/news/459067.html

相关文章:

  • 【AI论文精读13】RAG论文综述2(微软亚研院 2409)P5-可解释推理查询L3
  • 优达学城 Generative AI 课程3:Computer Vision and Generative AI
  • UE5 C++ 通过绑定编辑器事件实现控制柄顶点编辑
  • 云计算ftp 服务器实验
  • node.js服务器基础
  • 2-SAT 问题详解:逻辑约束与图论的结合
  • 使用NetTopologySuite读写gpkg文件
  • 什么是http?列出常见方法并解他们?
  • 通过修改注册表来提高导出图像的分辨率(PPT尝试)
  • OpenCV 环境配置
  • 使用通义千问模拟ChatGPT-o1进行思考,并以类似于ChatGPT-o1的形式输出
  • 维生素对于生活的重要性
  • STM32学习--4-1 OLED显示屏
  • 原生 App 上架 Mac App Store 过程总结
  • [实时计算flink]双流JOIN语句
  • metahuman如何导入UE5
  • Python知识点:基于Python技术,如何使用TensorFlow进行自动驾驶模型训练
  • Django的请求与响应
  • [java]Iterable<Integer> 和Iterator<Integer>的区别和用法
  • JavaScript进行数据可视化:D3.js入门
  • 字符串拼接方法性能对比和分析
  • [Halcon矩阵] 通过手眼标定矩阵计算相机旋转角度
  • 推荐几本编程入门书目
  • 每天一个数据分析题(五百零五)- 提升方法
  • 华为云ECS部署DR模式的LVS
  • 如何在 Jupyter Notebook 执行和学习 SQL 语句(上)
  • 数据结构-5.7.二叉树的层次遍历
  • RISC-V知识点目录
  • C++11 新特性 学习笔记
  • Go 语言中的格式化占位符