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

Flink 内存管理

一、内存模型

上图是一个 Flink 程序进程总体的内存模型,其包含 Flink 使用内存、JVM 元空间以及 JVM 开销。

  • Flink 使用了堆上内存和堆外内存;
  • 框架内存使用了堆上内存和堆外内存的直接内存;
  • Task 使用堆上内存和堆外内存的直接内存;
  • 管理内存、JVM 元空间以及 JVM 内存开销使用了堆外内存;
  • 网络内存使用了堆外内存;

概念解释

        JVM Heap:JVM 堆上内存

                Framework Heap Memory:Flink 框架本身使用的内存,不计入 Slot 资源中;

                Task Heap Memory:Task 执行用户代码时所使用的堆上内存;

        Off-Heap Memory:JVM 堆外内存

                Direct Memory:JVM 直接内存

                        Framework Off-Heap Memory:Flink 框架本身所使用的堆外内存,不计入 Slot 资源;

                        Task Off-Heap Memory:Task 执行用户代码所使用的堆外内存;

                        Network Memory:网络数据交换所使用的对外内存大小,如网络交换缓冲区;

                Managed Memory:Flink 管理的堆外内存,用于管理排序、哈希表、缓存中间结果以及 RocksDB State Backend 的本地内存;

     

Flink 使用内存 = 框架堆内和堆外内存 + Task 堆内和堆外内存 + 网络内存 + 管理内存

进程内存 = Flink 使用内存 + JVM 本身使用的内存

1.1、JobManager 内存模型

源码在 JobManagerFlinkMemory.java

配置在 flink-conf.yaml 中的 jobmanager.memory.process.size: 

1.2 TaskManager 内存模型

源码在 TaskExecutorFlinkMemory.java

配置在 flink-conf.yaml 中的 taskmanager.memory.flink.size: 

1.3 内存分配

1.3.1、JobManager 内存分配

调用 YarnClusterDescriptor.java 中的 startAppMaster()方法:

private ApplicationReport startAppMaster(
			Configuration configuration,
			String applicationName,
			String yarnClusterEntrypoint,
			JobGraph jobGraph,
			YarnClient yarnClient,
			YarnClientApplication yarnApplication,
			ClusterSpecification clusterSpecification) throws Exception {
    ... ...
    final JobManagerProcessSpec processSpec = JobManagerProcessUtils.processSpecFromConfigWithNewOptionToInterpretLegacyHeap(
			flinkConfiguration,
			JobManagerOptions.TOTAL_PROCESS_MEMORY);
		final ContainerLaunchContext amContainer = setupApplicationMasterContainer(
				yarnClusterEntrypoint,
				hasKrb5,
				processSpec);
    ... ...
}

相关文章:

  • 3.18练习
  • 实现图片多种处理需求的实用工具
  • 功能安全实战系列06-英飞凌Tricore系列SMU详解
  • cc1.日期和进制问题———选择题。
  • Hadoop 启动,发现 namenode、secondary namenodes,这两个没有启动,报错超时。
  • dify重磅升级:从0.15.3安全升级1.1.0新手避坑指南
  • 前端 | debounce 防抖 vs 节流(throttle)
  • 【人工智能-前端OpenWebUI】--图表显示
  • Oracle 19C分区表索引小结
  • 链式二叉树概念和结构
  • 【Java】Mybatis学习笔记
  • HTML5与CSS3新特性详解
  • C++回顾 day1
  • MATRIX-BREAKOUT: 2靶场
  • StarRocks中优雅处理JSON与列表字段的初步示例
  • sass介绍
  • 操作系统IO多路复用select,poll,epoll
  • 英语词性--介词
  • 基于springboot的网上订餐系统(006)
  • python:music21 与 AI 结合应用探讨
  • 马克思主义理论研究教学名师系列访谈|杜玉华:马克思主义是“认识世界”和“改变世界”的思维工具
  • 欢迎回家!神十九返回舱成功着陆
  • 2025年“投资新余•上海行”钢铁产业“双招双引”推介会成功举行
  • 专访|200余起诉讼,特朗普上台100天,美国已进入宪政危机
  • 深入贯彻中央八项规定精神学习教育中央指导组派驻地方和单位名单公布
  • 石家庄:城市更新,生活向美