Flink 内存管理(四):TaskManager 内存分配(实战篇)
- 1.单独分配 Total Process Size
- 2.单独分配 Total Flink Size
- 3.单独分配 Heap Size && Managed Memory
- 4.分配 Total Process Size 和 Heap Size && Managed Memory
- 5.分配 Total Flink Size 和 Heap Size && Managed Memory
- 6.内存分配小结
序号 | for TaskManager | for JobManager |
1️⃣ |
|
|
2️⃣ |
|
|
3️⃣ |
|
|
1.单独分配 Total Process Size
单独分配 Total Process Size
,其它的组件都会自动分配。
taskmanager.memory.process.size: 2000m
内存分配步骤如下:
- 首先
Total Process Size
- 因为没有显示分配组件中的任何参数,所以
JVM Overhead
-
JVM Metaspace
- ⭐ 所以
Native Memory
=JVM Overhead
+JVM Metaspace
-
Total Flink Size
-
Network Memory
-
Task Off-Heap
(默认) -
Framework Off-Heap
(默认) - ⭐ 所以
Total Direct Memory
-
Managed Memory
-
Total JVM Heap Memory
-
Framework Heap
-
Task Heap
可以与以下的日志进行对比,完全能对上,😁😁😁!
2.单独分配 Total Flink Size
taskmanager.memory.flink.size: 2000m
假如直接只分配 taskmanager.memory.flink.size: 2000m
-
Total Flink Size
-
Managed Memory
-
NetWork Memory
-
Framework Off-Heap
-
Task Off-Heap
- ⭐ 所以
Total Direct Memory
-
Total Off-Heap Memory
-
Total JVM Heap
-
Framework Heap
-
Task Heap
-
JVM MetaSpace
(默认) -
JVM Overhead
JVM Overhead
Metaspace
Total Flink Size
,求解JVM Overhead
在 ,生效 -
Total Process Size
3.单独分配 Heap Size && Managed Memory
taskmanager.memory.task.heap.size: 1000m
taskmanager.memory.managed.size: 1000m
-
Framework Heap
(默认) -
Task Heap
(配置) -
Total JVM Heap
-
Managed Memory
(配置) -
Framework Off-Heap
-
Task Off-Heap
-
NetWork
Total Flink Size
NetWork
,计算得到Network
,处于 ,有效 - ⭐ 所以
Total Direct Memory
-
Total Flink Size
-
JVM Metaspace
(默认) -
JVM Overhead
JVM Overhead
,处于 ,有效 -
Total Process Size
4.分配 Total Process Size 和 Heap Size && Managed Memory
指定 Total Process Size
,同时显式分配组件 JVM Heap
和 Mamaged Memory
。
taskmanager.memory.process.size: 3000m
taskmanager.memory.task.heap.size: 1000m
taskmanager.memory.managed.size: 1000m
-
Total Process Size
-
Framework Heap
(默认) -
Task Heap
(配置) -
Total JVM Heap
Framework Heap
Task Heap
-
Managed Memory
(配置) -
Framework Off-Heap
(默认) -
Task Off-Heap
(默认) -
Network Memory
Network Memory
,在 -
Total Off-Heap
-
Total Flink Size
-
JVM Metaspace
-
JVM Overhead
,在
5.分配 Total Flink Size 和 Heap Size && Managed Memory
指定 Total Flink Size
,同时显式分配组件 JVM Heap
和 Mamaged Memory
。
taskmanager.memory.flink.size: 3000m
taskmanager.memory.task.heap.size: 1000m
taskmanager.memory.managed.size: 1000m
-
Total Flink Size
(配置) -
Managed Memory
(配置) -
Task Heap
(配置) -
Framework Heap
(默认) -
Total JVM Heap
Framework Heap
+Task Heap
-
Total Off-Heap Memory
-
Direct Memory
Total Off-Heap Memory
-Managed Memory
-
Task Off-Heap
(默认) -
Framework Off-Heap
(默认) -
Network Memory
Direct Memory
Task Off-Heap
-Framework Off-Heap
-
JVM Metaspace
(默认) -
JVM Overhead
JVM Overhead
,计算得到JVM Overhead
,处于 -
Total Process Size
6.内存分配小结
在 Flink 的集群内存分配的过程中,我们大致可以通过
- 指定
Total Process Size
或Total Flink Size
,取决于你用什么方式部署。 - 单独指定某个组件,比如
Task-Heap
的大小,其它的组件都会被推导出来。 - 指定
Total Process / Flink Size
&&Heap
orOff-Heap
其中之一,其它的组件通过默认值进行填充或者进推导,如:
-
Total Flink Size
=Total Heap Size
+Total Off-Heap Size
-
Total Heap Size
=Task Heap
+Framework Heap
-
Total Off-Heap
=Task Off-Heap
+Framework Off-Heap
+Network Memory
+Managed Memory
-
Network
=Total Flink Size
(没有指定其它组件情况下) -
JVM Overhead
=Total Process Size
(没有指定其它组件情况下) - … …