Flink全托管支持基础模式(粗粒度)和专家模式(细粒度)两种资源配置模式。本文为您介绍如何配置粗粒度和细粒度资源。

背景信息

资源模式 说明
基础模式 粗粒度是一种静态资源分配方式,您只需要给定每个TM的启动所需要的总资源(CPU和JVM总内存),系统会根据taskmanager.numberOfTaskSlots的值均匀分配所有资源。对于大多数简单作业,粗粒度即可满足要求。
专家模式 细粒度是一种动态资源分配方式,您可以配置每个Task(甚至算子)所需要的资源,从而Flink会算出每个Slot需要的资源规格大小,动态的从可用资源池去申请完全匹配的TM和SLOT。对于复杂作业,粗粒度可能导致资源利用率低,因此需要细粒度资源对每个算子进行精细资源控制,从而提高资源使用率,满足作业吞吐的要求。

关于TM、JM、TASK、SLOT等概念的详情请参见Flink架构

前提条件

其他阿里云账号或RAM用户共同使用Flink全托管产品时,需要为阿里云账号或RAM用户授权,以进行配置作业资源等相关操作,详情请参见作业操作账号授权

使用限制

仅SQL作业支持专家模式。

操作步骤

  1. 进入目标作业运维页面。
    1. 登录实时计算管理控制台
    2. Flink全托管页签,单击目标工作空间操作列下的控制台
    3. 在左侧导航栏上,选择应用 > 作业运维
  2. 单击目标作业操作列的启动
  3. 填写资源配置信息。
    • 基础模式(粗粒度)资源设置
      配置项 说明
      JobManager CPU Cores 根据Flink最佳实践,单个JM内存资源需要至少配置为0.25 core和1 Gi,才能保证作业稳定运行。
      JobManager Memory 单位建议使用Gi或Mi,例如,1024 Mi或1.5 Gi。
      TaskManager CPU Cores 根据Flink最佳实践,单个TM内存资源需要至少配置为0.25 core和1 Gi,才能保证作业稳定运行。
      TaskManager Memory 单位建议使用Gi或Mi,例如,1024 Mi或1.5 Gi。
      并发度 作业全局并发数。
      Flink配置 Flink通过丰富的配置项用来精准的设置JM和TM每项内存的大小。例如通过taskmanager.memory.task.heap.size配置Task Heap Memory的值,通过taskmanager.memory.managed.fraction配置Managed Memory占整体内存的比例等,详情请参见Configuration
    • 专家模式(细粒度)专家模式
      配置项 说明
      JobManager CPU Cores 根据Flink最佳实践,单个JM内存资源需要至少配置为0.25 core和1 Gi,才能保证作业稳定运行。
      JobManager Memory 单位建议使用Gi或Mi,例如,1024 Mi或1.5 Gi。
      配置计划 配置计划即配置SLOT资源,填写步骤和说明如下:
      1. 单击立刻获取
      2. 单击SLOT框上的编辑图标。SLOT
      3. 修改SLOT配置信息。修改slot信息
        此处设置的并发数为整个作业全局的并发数。设置完成后,系统将自动进行以下操作:
        • 系统将自动为每个VERTEX设置相同的并发数。
        • 系统会根据作业的计算逻辑按需自动生成Statebackend、Python和Operator所需的内存,无需您手动进行配置。
        • 系统默认会按照一个SLOT所需的全部内存大小(即Heap Memory、Off-heap Memory、Statebackend、Python和Operator内存之和),以1:4的比例,生成一个SLOT所需的CPU。
          说明 建议在有明确异常或者需求时,再调整Heap Memory和Off-heap Memory的大小,例如作业出现OOM或严重GC等。因为在作业正常运行时,调整Heap Memory和Off-heap Memory的大小,不会明显改变作业的吞吐量。
      4. 修改VERTEX并发数。

        单击VERTEX框的编辑图标,按需为某个VERTEX设置并发数。

      5. 修改Operator并发数和Chain策略。
        Chain策略说明如下:
        • ALWAYS:始终可以和上下游算子Chain一起。
        • HEAD:当前算子作为Chain的头节点,只和上游算子断开Chain,下游节点仍和当前算子Chain在一起。
        • NEVER:当前算子不会与上下游算子进行Chain。
        说明
        • 建议Source节点并发度和分区数成比例,即并发度数能整除分区数。例如Kafka有16个分区,则并发度建议设置为16、8或4,这样可以避免数据倾斜。同时Source节点的并发度不宜设置太小,避免一个Source需要读取太多数据,导致出现入口瓶颈,影响作业吞吐。
        • 建议按需配置除Source外的其他节点的并发度。流量大的节点,并发设置大一些;流量小的节点,并发设置小一些。
      6. 单击确认
      Flink配置 可以配置的参数及说明,详情请参见Configuration
      说明 在Flink 配置中修改了配置,需要单击重新生成,才能产生新的资源配置计划。
  4. 单击下一步,填写基础设置信息。
    基础设置信息填写详情请参见作业启动
  5. 单击启动
    作业启动后,您可以在对应的作业中以下路径中查看JM和TM的数量和内存分布情况。详情如下:
    • JM内存情况JM内存
    • TM内存情况TM内存
      说明 您也可以在启动日志查看TM的资源申请情况。