当前位置:   article > 正文

Flink(十):TaskManager 内存简介_taskmanager.memory.process.size

taskmanager.memory.process.size

一、简介

          Flink  TaskManager(也称为 worker)执行作业流的 task,并且缓存和交换数据流,TaskManager 负责执行用户代码。根据实际需求为 TaskManager 配置内存将有助于减少 Flink 的资源占用,增强作业运行的稳定性。

二、TaskManager内存模型简介

说明:

  组成部分    配置参数    描述  
框架堆内存(Framework Heap Memory) taskmanager.memory.framework.heap.size

用于 Flink 框架的 JVM 堆内存通常情况下,不建议对框架堆内存和框架堆外内存进行调整

默认128M

任务堆内存(Task Heap Memory)taskmanager.memory.task.heap.size

用于 Flink 应用的算子及用户代码的 JVM 堆内存,任务堆内存是由

Total Flink Memory -( Framework Heap Memory、Framework Off-Heap Memory、Task Off-Heap Memory、Managed Memory 、 Network Memory)

托管内存(Managed memory)

taskmanager.memory.managed.size

taskmanager.memory.managed.fraction

由 Flink 管理的用于排序、哈希表、缓存中间结果及 RocksDB State Backend 的本地内存

taskmanager.memory.managed.fraction默认是0.4*总内存

框架堆外内存(Framework Off-heap Memory)taskmanager.memory.framework.off-heap.size用于 Flink 框架的堆外内存(直接内存或本地内存)(进阶配置),默认128M
任务堆外内存(Task Off-heap Memory)taskmanager.memory.task.off-heap.size

用于 Flink 应用的算子及用户代码的堆外内存(直接内存或本地内存)

默认值为 0,不使用堆外内存

网络内存(Network Memory)

taskmanager.memory.network.min

taskmanager.memory.network.max

taskmanager.memory.network.fraction

    用于任务之间数据传输的直接内存(例如网络传输缓冲)。该内存部分为基于Flink 总内存的受限的等比内存部分。这块内存被用于分配网络缓冲,

taskmanager.memory.network.min:网络缓存的最小值,默认 64MB;

taskmanager.memory.network.max:网络缓存的最大值,默认 1GB;

taskmanager.memory.network.fraction:默认Flink 总内存*0.1,若根据此比例算出的内存量比最小值小或比最大值大,就会限制到最小值或者最大值

JVM Metaspacetaskmanager.memory.jvm-metaspace.size

Flink JVM 进程的 Metaspace

默认值 256MB

JVM 开销taskmanager.memory.jvm-overhead.min
taskmanager.memory.jvm-overhead.max
taskmanager.memory.jvm-overhead.fraction
用于其他 JVM 开销的本地内存,例如栈空间、垃圾回收空间等。该内存部分为基于进程总内存的受限的等比内存部分

三、TaskManager内存运用场景

   1、任务堆内存(Task Heap Memory)

       用于 Flink 应用的算子及用户代码的 JVM 堆内存。默认值:

Total Flink Memory -( Framework Heap Memory、Framework Off-Heap Memory、Task Off-Heap Memory、Managed Memory 、 Network Memory)

  2、堆外内存(Task Off-heap Memory)

        在Flink应用的代码中调用了Native的方法,需要用到off-heap内存,这些内存会分配到Off-heap堆外内存中,大部分情况下是不用,堆外内存有优点,也有缺点。默认为0

  3、托管内存(Managed memory)

     托管内存是由 Flink 负责分配和管理的本地(堆外)内存。 以下场景需要使用托管内存:

  • 流处理作业中用于 RocksDB State Backend。
  • 流处理和批处理作业中用于排序、哈希表及缓存中间结果。
  • 流处理和批处理作业中用于在 Python 进程中执行用户自定义函数。

4、配置-Dtaskmanager.memory.process.size=8192m,可以清晰查看实际分配的情况

 

    

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/549813
推荐阅读
相关标签
  

闽ICP备14008679号