flink内存管理认识

了解flink内存管理对理解flink作业有很大的帮助,也可以解决一些程序运行问题,所以接下来进行flink的内存管理学习
本次学习的主要资料来源是flink中文学习网站 ververiva.cn
flink资源调度划分
上图是flink资源调度划分,job是任务级别的,task是进程级别,进程级别是程序执行的最小单位,所以我将详细了解task的内存管理情况
如下图所示,看上去有点眼花缭乱,怎么一个小小的slot里要区分这么多内存类型?貌似因为在以后slot有望进行slot之间的资源共享,也就是不耗内存的slot可以分一些资源给那些消耗资源很多的slot。如果你知道怎么划分这些内存的,这也将让你更容易的理解slot的内存管理,先理解一下下列词语

framework:架构,系统架构需要部分,在jvm中运行一定需要的一些资源,即使在没有任务没有数据的情况该部分资源依旧存在
Task:任务,在数据处理过程完成数据处理的部分,与framework区分开来,它是参与数据处理的,划分给数据的资源
Heap:堆,jvm的堆内存,里面存有数据处理代码中对象的信息,和HeapStateBackend中的保存值
Off-Heap:非堆,直接内存(java可以使用一些方法进行零拷贝)Native(JNI,C++使用的内存)
Network: 网络,网络传输中所使用的缓存内存
Managed:管理,RocksDB使用的C++操作的Native memory,Bath Operator会用managed memory进行排序等优化操作
JVM Metaspace:jvm元数据,jvm加载的类的元数据,当代码依赖了很多第三方库时需要考虑该配置
JVM Overhead:Native memory,栈等使用的内存

在这里插入图片描述
一个slot里的内存分布情况:
这很容易记忆是吧,slot里需要注意,堆内存,和非堆内存,缓存内存,和管理内存

在这里插入图片描述
关于内存的配置:
由于这些内存资源并不是独立的,所以当你修改某个内存的时候,对其他内存是有影响的,比如
jvm -Xmx=framework heap +task heap
jvm -XX=MaxDirectMemorySize=framework off-heap+task off-heap
具体的计算可以通过官方给的一个计算表格网址是:https://docs.google.com/spreadsheets/d/1mJaMkMPfDJJ-w6nMXALYmTc4XxiV30P5U7DzgwLkSoE/edit#gid=0
你将可以根据给定的值看到其他内存的具体分布情况如图所示,如果你不方便进行网络查看。可以使用git上一个工具方法地址是
https://github.com/KarmaGYZ/flink-memory-calculator,具体的使用方法,看视频你会更清楚,视频地址
https://www.bilibili.com/video/BV1At4y1U7vH 该内容在视频第61分钟开始

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值