一、简介

        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.sizejobmanager.memory.flink.size
进程总内存taskmanager.memory.process.sizejobmanager.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博客

Flink(十):TaskManager 内存简介_zhengcongyi的博客-CSDN博客

Logo

开源、云原生的融合云平台

更多推荐