Flink是基于java的JVM运行,拥有高效的数据处理能力,但是考虑到用户在 Flink 上运行的应用的多样性,尽管flink框架已经为所有配置项提供合理的默认值,仍无法满足所有情况下的需求。 为了给用户生产提供最大化的价值, Flink 允许用户在整体上以及细粒度上对集群的内存分配进行调整。(本文介绍的内存配置方法适用于 1.11 及以上版本)
一、flink任务的总内存
Flink JVM 进程的 进程总内存(Total Process Memory)包含了: Flink 任务和框架本身使用的内存(Total Flink Memory)和运行 Flink 的 JVM 本身使用的内存。
Flink 总内存(Total Flink Memory)包括 JVM 堆内存(Heap Memory)和堆外内存(Off-Heap Memory)。 其中堆外内存包括直接内存(Direct Memory)和本地内存(Native Memory)。
配置 Flink 进程内存最简单的方法是指定以下两个配置项中的任意一个:
配置项 | TaskManager 配置参数 | JobManager 配置参数 |
Total Flink Memory | taskmanager.memory.flink.size | jobmanager.memory.flink.size |
Total Process Memory | taskmanager.memory.process.size | jobmanager.memory.process.size |