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

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);
    ... ...
}

http://www.kler.cn/a/597288.html

相关文章:

  • 配置阿里云yum源
  • Python图像处理PIL库安装与使用
  • c#知识点补充4
  • 二分类任务和多分类任务
  • Vue 3 中使用 vue - pdf - embed + vue3 - pdfjs 在线预览 PDF
  • python 3.13.1 下载与安装(附安装包)python 3.13.1详细安装教程
  • 【愚公系列】《高效使用DeepSeek》024-儿童教育
  • [leetcode 1382]将二叉搜索树变平衡
  • R语言软件配置(自用)
  • js逆向之断点调试
  • 信奥赛CSP-J复赛集训(模拟算法专题)(27):P5016 [NOIP 2018 普及组] 龙虎斗
  • HarmonyOS-UIAbility 启动模式
  • moveit2基础教程上手-使用xarm6演示
  • 【Linux系列】实时监控磁盘空间:`watch -n 1 ‘df -h‘` 命令详解
  • UI数据处理新隐私保护:确保用户新信息安全
  • QT编程之PCM音频处理
  • 压缩壳学习
  • 【蓝桥杯】12111暖气冰场(多源BFS 或者 二分)
  • 智能家居安全革命:代理IP如何守护物联网世界
  • 哈尔滨工业大学DeepSeek公开课人工智能:从图灵测试到DeepSeek|附视频和PPT下载方法