全部产品
Search
文档中心

实时计算Flink版:配置作业资源

更新时间:Jan 31, 2024

作业启动前或者作业上线后,您可以配置和修改作业资源,本文为您介绍如何配置和修改作业资源。

使用限制

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

注意事项

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

操作步骤

  1. 进入资源配置入口。

    1. 登录实时计算控制台

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

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

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

  2. 修改作业资源信息。

    基础模式(粗粒度)

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

    配置项

    说明

    并发度

    作业全局并发数。

    JobManager CPU

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

    JobManager Memory

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

    TaskManager CPU

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

    TaskManager Memory

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

    每个TaskManager Slot数

    请填写TM的Slot数。

    说明

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

    专家模式(细粒度)

    说明

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

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

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

    配置基础信息

    配置项

    说明

    JobManager CPU

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

    JobManager Memory

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

    每个TaskManager Slot数

    设置TM Slot数。

    配置SLOT资源

    1. 单击编辑后,资源模式选择为专家模式

    2. 资源模式选择为专家模式后,单击立刻获取

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

    4. 修改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的大小,不会明显改变作业的吞吐量。

    5. 单击确定

    配置算子并发数

    1. 资源模式选择为专家模式

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

    3. 单击确定

    配置算子Chain策略

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

    1. 资源模式选择为专家模式

    2. 单击编辑图标。

      image.png

    3. 修改Chain策略。

      Chaining策略

      说明

      ALWAYS(默认值)

      算子始终可以和上下游算子Chain一起。

      HEAD

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

      NEVER

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

    4. 单击确定

    配置算子的资源

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

    1. 在作业部署详情页签运行参数配置区域的其他配置中添加如下参数信息。

      table.exec.split-slot-sharing-group-per-vertex: 'true' 
    2. 重启作业。

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

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

      image.png

    5. 单击确定

  3. 单击保存

相关文档