一、简介
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的博客-优快云博客
本文介绍了Apache Flink的内存管理机制,详细解释了Flink进程内存模型,并提供了独立部署和容器部署模式下的内存配置建议。
1万+

被折叠的 条评论
为什么被折叠?



