Flink(八):Flink 进程内存、总内存内存简介
Apache Flink 是一个分布式系统,它需要计算资源来执行应用程序。Flink 集成了所有常见的集群资源管理器,例如Hadoop YARN、Apache Mesos和Kubernetes,Apache Flink 也是基于 JVM 的高效处理能力,我们需对各组件内存的了解,更好的使用内存。
一、简介
Apache Flink 是一个分布式系统,它需要计算资源来执行应用程序。Flink 集成了所有常见的集群资源管理器,例如Hadoop YARN、Apache Mesos和Kubernetes, Apache Flink 也是基于 JVM 的高效处理能力,我们需对各组件内存的了解,更好的使用内存。
二、Flink 进程内存模型简介
Flink JVM 进程总内存(Total Process Memory):包含了由 Flink 应用使用的内存(Flink 总内存)以及由运行 Flink 的 JVM 使用的内存。
Flink 总内存(Total Flink Memory):包括 JVM 堆内存(Heap Memory)和堆外内存(Off-Heap Memory)。 其中堆外内存包括直接内存(Direct Memory)和本地内存(Native Memory)。
三、Flink 进程内存、总内存简介
1、TaskManager、JobManager参数设置
配置项 | TaskManager 配置参数 | JobManager 配置参数 |
---|---|---|
Flink 总内存 | taskmanager.memory.flink.size | jobmanager.memory.flink.size |
进程总内存 | taskmanager.memory.process.size | jobmanager.memory.process.size |
2、Total Flink Memory、Total Process Memory选择简介
1)独立部署模式(Standalone Deployment):
建议采用Total Flink Memory类型,我们通常更关注 Flink 应用本身使用的内存大小,如果出现内存溢出,直接调整总内存 大小
2) 容器(Container)部署模式:
建议采用Total Process Memory类型, 在容器化部署模式(Kubernetes、Yarn 或 Mesos)下,配置进程总内存(taskmanager.memory.process.size或者jobmanager.memory.process.size),相当于申请的容器(Container)大小。如果配置了 Flink 总内存,Flink 会自动加上 JVM 相关的内存部分,根据推算出的进程总内存大小申请容器。
注意: 如果 Flink 或者用户代码分配超过容器大小的非托管的堆外(本地)内存,部署环境可能会杀掉超用内存的容器,造成作业执行失败。
3、注意
不建议同时设置进程总内存和 Flink 总内存。 这可能会造成内存配置冲突,从而导致部署失败。 额外配置其他内存部分时,同样需要注意可能产生的配置冲突。
通过设置 Flink 总内存的特定内部组成部分的方式来进行内存配置。参考TaskManager 和 JobManager ,Flink(九):JobManager 内存简介_zhengcongyi的博客-CSDN博客
更多推荐
所有评论(0)