Flink(十):TaskManager 内存简介

一、简介

          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,可以清晰查看实际分配的情况

 

    

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农_程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值