Flink-Config
# 内存配置
# Flink进程内存
配置 Flink 进程内存最简单的方法是指定以下两个配置项中的任意一个:
配置项 | TaskManager配置参数 | JobManager配置参数 | 包含模块 |
---|---|---|---|
Total process memory 进程总内存 | taskmanager.memory.process.size | jobmanager.memory.process.size | 1. Total Flink memory 2. 运行 Flink 的 JVM 使用的内存 |
Total Flink memory Flink总内存 | taskmanager.memory.flink.size | jobmanager.memory.flink.size | 1. JVM Heap 2. Off-heap memory 2- 1. Direct 2- 2. Native |
不建议同时设置进程总内存(Total process memory)和 Flink 总内存(Total Flink memory)。 这可能会造成内存配置冲突,从而导致部署失败。 额外配置其他内存部分时,同样需要注意可能产生的配置冲突。
详细参见:配置 Flink 进程的内存 (opens new window)
# JobManager
如果同时配置了 Flink 总内存(Total Flink Memory)和 JVM 堆内存(JVM Heap),且没有配置堆外内存,那么堆外内存的大小将会是 Flink 总内存(Total Flink Memory)减去JVM 堆内存(JVM Heap)。 这种情况下,堆外内存的默认大小将不会生效。
组成部分 | 配置参数 | 描述 |
---|---|---|
JVM HeapJVM 堆内存 | jobmanager.memory.heap.size | JobManager 的 JVM 堆内存。 |
Off-Heap Memory 堆外内存 | jobmanager.memory.off-heap.size | JobManager 的堆外内存(直接内存或本地内存)。 |
JVM Metaspace | jobmanager.memory.jvm-metaspace.size | Flink JVM 进程的 Metaspace。 |
JVM OverheadJVM 开销 | jobmanager.memory.jvm-overhead.minjobmanager.memory.jvm-overhead.maxjobmanager.memory.jvm-overhead.fraction | 用于其他 JVM 开销的本地内存,例如栈空间、垃圾回收空间等。该内存部分为基于进程总内存 (opens new window)的受限的等比内存部分 (opens new window)。 |
如果已经明确设置了 JVM 堆内存,建议不要再设置进程总内存(total process memory)或 Flink 总内存(total Flink memory),否则可能会造成内存配置冲突。
详情参见:配置 JobManager 内存 (opens new window)
# Taskmanager
组成部分 | 配置参数 | 描述 |
---|---|---|
Framework Heap框架堆内存 | taskmanager.memory.framework.heap.size | 用于 Flink 框架的 JVM 堆内存(进阶配置)。 |
Task Heap任务堆内存 | taskmanager.memory.task.heap.size | 用于 Flink 应用的算子及用户代码的 JVM 堆内存。 |
Managed Memory托管内存 | taskmanager.memory.managed.size taskmanager.memory.managed.fraction | 由 Flink 管理的用于排序、哈希表、缓存中间结果及 RocksDB State Backend 的本地内存。 |
Framework Off-Heap | ||
框架堆外内存 | taskmanager.memory.framework.off-heap.size | 用于 Flink 框架的堆外内存(直接内存或本地内存)(进阶配置)。 |
Task Off-Heap任务堆外内存 | taskmanager.memory.task.off-heap.size | 用于 Flink 应用的算子及用户代码的堆外内存(直接内存或本地内存)。 |
Network网络内存 | taskmanager.memory.network.min taskmanager.memory.network.max taskmanager.memory.network.fraction | 用于任务之间数据传输的直接内存(例如网络传输缓冲)。该内存部分为基于 Flink 总内存的受限的等比内存部分。这块内存被用于分配网络缓冲 |
JVM Metaspace | taskmanager.memory.jvm-metaspace.size | Flink JVM 进程的 Metaspace。 |
JVM Overhead | taskmanager.memory.jvm-overhead.min taskmanager.memory.jvm-overhead.max taskmanager.memory.jvm-overhead.fraction | 用于其他 JVM 开销的本地内存,例如栈空间、垃圾回收空间等。该内存部分为基于进程总内存的受限的等比内存部分。 |
详情参见:配置 TaskManager 内存 (opens new window)
# 部署推荐
独立部署模式下,通常更关注 Flink 应用本身使用的内存大小。 建议配置
- Flink 总内存(taskmanager.memory.flink.size 或者 jobmanager.memory.flink.size)
- 其组成部分。 此外,如果出现 Metaspace 不足的问题,可以调整 JVM Metaspace 的大小。 这种情况下通常无需配置进程总内存,因为不管是 Flink 还是部署环境都不会对 JVM 开销 进行限制,它只与机器的物理资源相关。
上次更新: 2025/03/09, 15:45:50