Flink 内存梳理与遇到的问题修复

Flink内存相关文章



Flink基础模型内存模型

提示:我们需要知道Jobmanager和Taskmanager对应的内存模型,来分配相应的内存,让内存利用率最大化(本文基于flink1.17说明)。

一、JobManager内存模型:

参数设置:

  • jobmanager.memory.process.size:对应到图中的 Total Process Memory 。对应到 -yjm。

  • jobmanager.memory.flink.size:对应到图中的Total Flink Memory,作业管理器的总Flink内存大小。这包括JobManager消耗的所有内存,除了JVM元空间和JVM开销,它由JVM堆内存和堆外内存组成。

  • jobmanager.memory.heap.size :对应到图中的JVM Head:JobManager的JVM堆内存大小。

  • jobmanager.memory.off-heap.size:默认值:128mb,对应到图中的Off-Heap Memory。JobManager的堆外内存。

  • jobmanager.memory.jvm-metaspace.size:默认值:256mb ,对应到图中的JVM Metaspace。- JobManager JVM 进程的 Metaspace。

  • JVM Overhead,是用于其他 JVM 开销的本地内存,例如栈空间、垃圾回收空间等,JVM开销的大小是为了弥补总进程内存中配置的部分。

    • jobmanager.memory.jvm-overhead.fraction:默认值 0.1(Total Process Memory的0.1)。
    • jobmanager.memory.jvm-overhead.min:默认值192mb
    • jobmanager.memory.jvm-overhead.max:默认值1gb
    • 按照比例算,如果内存大小小于或大于配置的最小或最大大小,则将使用最小或最大大小。可以通过将最小和最大大小设置为相同的值,可以显式指定JVM开销的确切大小。

举例:
那么如果设置了 -yjm 1024 ,JobManager的JVM的堆内存大小是多少呢?
可以看到默认值
也可以在配置或运行日志中看到

二、TaskManager的内存模型:

在这里插入图片描述

参数设置:

  • taskmanager.memory.process.size:对应到图中的Total Process Memory,TaskExecutors的总进程内存大小。这包括TaskExecutor消耗的所有内存,包括总Flink内存、JVM元空间和JVM开销。对应到 -ytm。

  • taskmanager.memory.flink.size:对应到图中的Total Flink Memory,TaskExecutors的总Flink内存大小。它由框架堆内存、任务堆内存、任务堆外内存、托管内存和网络内存组成。

  • taskmanager.memory.framework.heap.size:默认值128mb,对应到图中的Framework Heap。用于 Flink 框架的 JVM 堆内存。

  • taskmanager.memory.task.heap.size:对应到图中的Task Heap。用于 Flink 应用的算子及用户代码的 JVM 堆内存,

  • 托管内存:对应到图中的Managed Memory,流处理作业中使用 RocksDB State Bac

  • 37
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值