文档

配置作业资源

更新时间:

您可以在作业启动前配置作业资源或者作业上线后修改作业资源,支持基础模式(粗粒度)和专家模式(细粒度)两种资源模式。本文为您介绍如何配置作业资源,以及两种资源模式下的参数信息。

注意事项

资源配置后,需重启作业才能生效。

操作步骤

  1. 进入资源配置入口。

    1. 登录实时计算控制台

    2. 单击目标工作空间操作列下的控制台

    3. 作业运维页面,单击目标作业名称。

    4. 部署详情页签,单击资源配置区域右侧的编辑

  2. 修改作业资源信息。

    支持基础模式(粗粒度)和专家模式(细粒度)两种资源配置模式。

    资源模式

    说明

    配置参数说明

    基础模式

    粗粒度是一种静态资源分配方式,您只需要给定每个TM启动所需要的总资源(CPU和JVM总内存),系统会根据每个TaskManager Slot数(即flink conf taskmanager.numberOfTaskSlots)均匀分配所有资源。对于大多数简单作业,粗粒度即可满足要求。

    image

    基础模式(粗粒度)

    专家模式

    细粒度是一种动态资源分配方式,您可以配置每个Slot共享组(Slot Sharing Group,SSG)所需要的资源,Flink会计算出每个Slot需要的资源规格大小,动态的从可用资源池去申请完全匹配的TM和Slot。对于复杂作业,粗粒度可能导致资源利用率低,因此需要细粒度资源对每个算子进行精细资源控制,从而提高资源使用率,满足作业吞吐的要求。

    image

    说明

    仅SQL作业支持配置专家模式。

    专家模式(细粒度)

    关于TM、JM、Task或Slot等概念,详情请参见Apache Flink Architecture

  3. 单击保存

  4. 重启作业。

    作业资源配置后,需重启作业才能生效。

基础模式(粗粒度)

配置项

说明

并发度

作业全局并发数。

JobManager CPU

根据Flink最佳实践,单个JM内存资源需要至少配置为0.25 Core和1 GiB,才能保证作业稳定运行。建议您配置为1 Core和4 GiB。

JobManager Memory

单位为GiB,最小值为1 GiB。

TaskManager CPU

根据Flink最佳实践,单个TM内存资源需要至少配置为0.25 Core和1 GiB,才能保证作业稳定运行。建议您配置为1 Core和4 GiB。

TaskManager Memory

单位为GiB,最小值为1 GiB。

每个TaskManager Slot数

请填写TM的Slot数。

您可以根据以下公式进行推算:

  • 作业所配置的CU数 = MAX(JM和TM的CPU总和, JM和TM的内存总和/4)。

  • 每个作业所需IP数 = JM数(每个作业只有一个)+实际TM数

  • 实际TM数= MAX(总CPU数/TM的CPU默认最大值总内存数/TM的内存默认最大值

    • 总CPU数=设置的并发度/设置的每个TaskManager Slot数*设置的单个TM CPU。

    • 总内存数=设置的并发度/设置的每个TaskManager Slot数*设置的单个TM的内存。

    • TM的CPU默认最大值为16 Core。

    • TM的内存默认最大值为64 GiB。

  • 实际每个TM上可分配的slot数 = ⌈设置的并发数/实际TM数⌉

例如,当并发度设置为80,每个TM Slot数设置为20,每个TM CPU设置为22 core,每个TM 内存设置为30 GiB时,配置如下图所示。

image

在Flink开发控制台,您会看到实际的TaskManager数为6,每个TaskManager Slot数为14。

image

实际的TM数和每个TM的Slot数的推算过程如下:

  1. 实际TM数 =MAX(⌈总CPU数/TM的CPU默认最大值⌉,⌈总内存数/TM的内存默认最大值⌉)= MAX(⌈设置的并发数/单个TM的Slot数量*设置的单个TM CPU/16⌉,⌈设置的并发数/单个TM的Slot数量*设置的单个TM的内存/64⌉)= MAX(⌈80/20*22/16⌉,⌈80/20*30/64⌉)= MAX(⌈88/16⌉,⌈120/64⌉)= MAX(6,2) = 6。

  2. 实际TM的Slot数=⌈并发数/实际TM数⌉ = ⌈80/6⌉=14。

说明
  • 实际TM的推算逻辑需要您设置的TM的CPU和内存大于其最大默认值,才可有效。

  • 计算比值需分别向上取整。

  • 如果您需要提高默认TM内存和CPU的最大值,请您提交工单

  • 您也可以在作业部署详情页签运行参数配置区域的其他配置中设置numberOfTaskSlots参数,和界面配置每个TaskManager Slot数作用相同,但优先级更高。

专家模式(细粒度)

说明

仅SQL作业支持配置专家模式。

配置基础资源

配置项

说明

JobManager CPU

根据Flink最佳实践,单个JM内存资源需要至少配置为0.25 core和1 GiB,才能保证作业稳定运行。

JobManager Memory

单位为GiB,例如,4 GiB。最小值为1 GiB。

每个TaskManager Slot数

无。

配置Slot资源

  1. 专家模式下,单击立刻获取,获取资源计划图。

    image

  2. 单击Slot框上的编辑图标。SLOT

  3. 修改Slot配置信息。修改slot信息

    此处设置的并发数为该Slot共享组内所有算子的统一并发数。设置完成后,系统将自动进行以下操作:

    • 系统将自动为该Slot共享组内的所有算子设置相同的并发数。

    • 系统会根据作业的计算逻辑按需自动生成Statebackend、Python和Operator所需的内存,无需您手动进行配置。

    • 说明
      • 建议Source节点并发度和分区数成比例,即并发度数能整除分区数。例如Kafka有16个分区,则并发度建议设置为16、8或4,这样可以避免数据倾斜。同时Source节点的并发度不宜设置太小,避免一个Source需要读取太多数据,导致出现入口瓶颈,影响作业吞吐。

      • 建议按需配置除Source外的其他节点的并发度。流量大的节点,并发设置大一些;流量小的节点,并发设置小一些。

      • 建议在有明确异常或者需求时,再调整Heap Memory和Off-heap Memory的大小,例如作业出现OOM或严重GC等。因为在作业正常运行时,调整Heap Memory和Off-heap Memory的大小,不会明显改变作业的吞吐量。

  4. 单击确定

配置算子资源

默认情况下,所有算子都放在一个Slot共享组内,因此您无法为每个算子单独修改资源配置。如果您需要对单独的算子设置资源,需要开启多SSG模式后让每个算子有自己独立的Slot,这样就可以直接在对应的Slot上设置算子的资源。具体的算子资源设置步骤如下:

  1. 在作业部署详情页签资源配置区域,单击编辑后,资源模式选择为专家模式

  2. (可选)如果暂无资源计划,单击立刻获取

    image

  3. 打开多SSG模式开关后,单击重新生成

    此时一个共享组内的算子被拆分为单个Slot。

    image

  4. 单击目标算子对应Slot框上的编辑图标后,修改算子资源。

    image

  5. 单击确定

配置算子并发、Chain策略和TTL

说明

仅实时计算引擎VVR 8.0.7及以上版本支持配置算子TTL。

支持配置单个算子的并发数、Chaining策略和算子State过期时间(TTL)。

  1. 单击目标VERTEX框上的image展开VERTEX。

    image

    说明

    您可以单击目标VERTEX上的编辑图标,批量设置对应VERTEX下的算子并发数。

  2. 单击算子的image图标。

    image

  3. 配置算子资源。

    image

    参数说明如下:

    参数

    说明

    并发数

    对应算子的并发数。

    Chaining策略

    Chain是指多个算子被连接在一起形成的逻辑计算链。它能够提高作业的执行效率和性能,减少数据在算子之间的传输和序列化开销。不过有时可能需要将Chain断开,以便更好地控制作业的执行流程和性能。支持配置策略如下:

    • ALWAYS(默认值):算子始终可以和上下游算子Chain一起。

    • HEAD:当前算子作为Chain的头节点,只和上游算子断开Chain,下游节点仍和当前算子Chain在一起。

    • NEVER:当前算子不会与上下游算子进行Chain。

    算子State过期时间设置(TTL)

    支持设置秒、分钟、小时和天为单位的过期时间。默认为作业的过期时间(未设置过期时间的作业默认为1.5天,作业过期时间配置请参见运行参数配置)。

    说明
    • 仅实时计算引擎VVR 8.0.7及以上版本支持。

    • 仅有状态算子支持配置过期时间。

  4. 单击确定

相关文档