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️⃣

taskmanager.memory.flink.size

jobmanager.memory.flink.size

2️⃣

taskmanager.memory.process.size

jobmanager.memory.process.size

3️⃣

taskmanager.memory.task.heap.sizetaskmanager.memory.managed.size

jobmanager.memory.heap.size

1.单独分配 Total Process Size

单独分配 Total Process Size,其它的组件都会自动分配。

taskmanager.memory.process.size: 2000m

flink 在哪里查看task的内存使用情况_内存管理

内存分配步骤如下:

  • 首先 Total Process Size flink 在哪里查看task的内存使用情况_内存分配_02
  • 因为没有显示分配组件中的任何参数,所以 JVM Overhead flink 在哪里查看task的内存使用情况_flink_03
  • JVM Metaspace flink 在哪里查看task的内存使用情况_jvm_04
  • ⭐ 所以 Native Memory = JVM Overhead + JVM Metaspace flink 在哪里查看task的内存使用情况_内存管理_05
  • Total Flink Size flink 在哪里查看task的内存使用情况_jvm_06
  • Network Memory flink 在哪里查看task的内存使用情况_大数据_07
  • Task Off-Heap flink 在哪里查看task的内存使用情况_大数据_08 flink 在哪里查看task的内存使用情况_内存管理_09(默认)
  • Framework Off-Heap flink 在哪里查看task的内存使用情况_大数据_08 flink 在哪里查看task的内存使用情况_大数据_11(默认)
  • ⭐ 所以 Total Direct Memory flink 在哪里查看task的内存使用情况_jvm_12
  • Managed Memory flink 在哪里查看task的内存使用情况_大数据_13
  • Total JVM Heap Memory flink 在哪里查看task的内存使用情况_flink_14
  • Framework Heap flink 在哪里查看task的内存使用情况_jvm_15
  • Task Heap flink 在哪里查看task的内存使用情况_内存管理_16

可以与以下的日志进行对比,完全能对上,😁😁😁!

flink 在哪里查看task的内存使用情况_内存分配_17

2.单独分配 Total Flink Size

taskmanager.memory.flink.size: 2000m

假如直接只分配 taskmanager.memory.flink.size: 2000m

  • Total Flink Size flink 在哪里查看task的内存使用情况_内存分配_02
  • Managed Memory flink 在哪里查看task的内存使用情况_flink_19
  • NetWork Memory flink 在哪里查看task的内存使用情况_flink_03
  • Framework Off-Heap flink 在哪里查看task的内存使用情况_jvm_15
  • Task Off-Heap flink 在哪里查看task的内存使用情况_jvm_22
  • ⭐ 所以 Total Direct Memory flink 在哪里查看task的内存使用情况_大数据_23
  • Total Off-Heap Memory flink 在哪里查看task的内存使用情况_内存分配_24
  • Total JVM Heap flink 在哪里查看task的内存使用情况_内存管理_25
  • Framework Heap flink 在哪里查看task的内存使用情况_jvm_15
  • Task Heap flink 在哪里查看task的内存使用情况_内存分配_27
  • JVM MetaSpace flink 在哪里查看task的内存使用情况_jvm_04(默认)
  • JVM Overhead flink 在哪里查看task的内存使用情况_大数据_29JVM Overhead flink 在哪里查看task的内存使用情况_内存管理_30 Metaspace flink 在哪里查看task的内存使用情况_内存分配_31 Total Flink Size flink 在哪里查看task的内存使用情况_大数据_32,求解 JVM Overhead flink 在哪里查看task的内存使用情况_大数据_33flink 在哪里查看task的内存使用情况_jvm_34,生效
  • Total Process Size flink 在哪里查看task的内存使用情况_大数据_35

flink 在哪里查看task的内存使用情况_内存分配_36

3.单独分配 Heap Size && Managed Memory

taskmanager.memory.task.heap.size: 1000m
taskmanager.memory.managed.size: 1000m
  • Framework Heap flink 在哪里查看task的内存使用情况_jvm_15(默认)
  • Task Heap flink 在哪里查看task的内存使用情况_jvm_38(配置)
  • Total JVM Heap flink 在哪里查看task的内存使用情况_内存管理_39
  • Managed Memory flink 在哪里查看task的内存使用情况_jvm_38(配置)
  • Framework Off-Heap flink 在哪里查看task的内存使用情况_jvm_15
  • Task Off-Heap flink 在哪里查看task的内存使用情况_内存管理_42
  • NetWork flink 在哪里查看task的内存使用情况_大数据_08 Total Flink Size flink 在哪里查看task的内存使用情况_内存管理_44 flink 在哪里查看task的内存使用情况_大数据_29NetWork flink 在哪里查看task的内存使用情况_flink_46,计算得到 Network flink 在哪里查看task的内存使用情况_大数据_47,处于 flink 在哪里查看task的内存使用情况_内存分配_48,有效
  • ⭐ 所以 Total Direct Memory flink 在哪里查看task的内存使用情况_内存管理_49
  • Total Flink Size flink 在哪里查看task的内存使用情况_内存管理_50
  • JVM Metaspace flink 在哪里查看task的内存使用情况_jvm_04(默认)
  • JVM Overhead flink 在哪里查看task的内存使用情况_大数据_29JVM Overhead flink 在哪里查看task的内存使用情况_jvm_53,处于 flink 在哪里查看task的内存使用情况_大数据_54,有效
  • Total Process Size flink 在哪里查看task的内存使用情况_内存分配_55

flink 在哪里查看task的内存使用情况_内存管理_56

4.分配 Total Process Size 和 Heap Size && Managed Memory

指定 Total Process Size,同时显式分配组件 JVM HeapMamaged Memory

taskmanager.memory.process.size: 3000m
taskmanager.memory.task.heap.size: 1000m
taskmanager.memory.managed.size: 1000m
  • Total Process Size flink 在哪里查看task的内存使用情况_jvm_57
  • Framework Heap flink 在哪里查看task的内存使用情况_jvm_15(默认)
  • Task Heap flink 在哪里查看task的内存使用情况_jvm_38(配置)
  • Total JVM Heap flink 在哪里查看task的内存使用情况_大数据_08 Framework Heap flink 在哪里查看task的内存使用情况_flink_61 Task Heap flink 在哪里查看task的内存使用情况_内存管理_62
  • Managed Memory flink 在哪里查看task的内存使用情况_jvm_38(配置)
  • Framework Off-Heap flink 在哪里查看task的内存使用情况_jvm_15(默认)
  • Task Off-Heap flink 在哪里查看task的内存使用情况_内存管理_42(默认)
  • Network Memory flink 在哪里查看task的内存使用情况_大数据_29Network Memory flink 在哪里查看task的内存使用情况_jvm_67,在 flink 在哪里查看task的内存使用情况_大数据_68
  • Total Off-Heap flink 在哪里查看task的内存使用情况_jvm_69
  • Total Flink Size flink 在哪里查看task的内存使用情况_内存管理_50
  • JVM Metaspace flink 在哪里查看task的内存使用情况_jvm_04
  • JVM Overhead flink 在哪里查看task的内存使用情况_大数据_72,在 flink 在哪里查看task的内存使用情况_大数据_54

flink 在哪里查看task的内存使用情况_flink_74

5.分配 Total Flink Size 和 Heap Size && Managed Memory

指定 Total Flink Size,同时显式分配组件 JVM HeapMamaged Memory

taskmanager.memory.flink.size: 3000m
taskmanager.memory.task.heap.size: 1000m
taskmanager.memory.managed.size: 1000m
  • Total Flink Size flink 在哪里查看task的内存使用情况_内存管理_75(配置)
  • Managed Memory flink 在哪里查看task的内存使用情况_jvm_38(配置)
  • Task Heap flink 在哪里查看task的内存使用情况_jvm_38(配置)
  • Framework Heap flink 在哪里查看task的内存使用情况_jvm_15(默认)
  • Total JVM Heap flink 在哪里查看task的内存使用情况_大数据_08 Framework Heap + Task Heap flink 在哪里查看task的内存使用情况_内存管理_80
  • Total Off-Heap Memory flink 在哪里查看task的内存使用情况_内存管理_81
  • Direct Memory flink 在哪里查看task的内存使用情况_大数据_08 Total Off-Heap Memory - Managed Memory flink 在哪里查看task的内存使用情况_jvm_83
  • Task Off-Heap flink 在哪里查看task的内存使用情况_内存管理_42(默认)
  • Framework Off-Heap flink 在哪里查看task的内存使用情况_jvm_15(默认)
  • Network Memory flink 在哪里查看task的内存使用情况_大数据_08 Direct Memory flink 在哪里查看task的内存使用情况_内存分配_87 Task Off-Heap - Framework Off-Heap flink 在哪里查看task的内存使用情况_内存分配_88
  • JVM Metaspace flink 在哪里查看task的内存使用情况_jvm_04(默认)
  • JVM Overhead flink 在哪里查看task的内存使用情况_大数据_29JVM Overhead flink 在哪里查看task的内存使用情况_flink_91,计算得到 JVM Overhead flink 在哪里查看task的内存使用情况_jvm_92,处于 flink 在哪里查看task的内存使用情况_内存分配_93
  • Total Process Size flink 在哪里查看task的内存使用情况_大数据_94

flink 在哪里查看task的内存使用情况_flink_95

6.内存分配小结

在 Flink 的集群内存分配的过程中,我们大致可以通过 flink 在哪里查看task的内存使用情况_大数据_96

  • 指定 Total Process SizeTotal Flink Size,取决于你用什么方式部署。
  • 单独指定某个组件,比如 Task-Heap 的大小,其它的组件都会被推导出来。
  • 指定 Total Process / Flink Size && Heap or Off-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 flink 在哪里查看task的内存使用情况_jvm_97(没有指定其它组件情况下)
  • JVM Overhead = Total Process Size flink 在哪里查看task的内存使用情况_jvm_97(没有指定其它组件情况下)
  • … …