动态扩缩容与参数动态更新

动态更新Flink作业参数可以实现更快的参数配置生效,减少作业启停对业务的中断时间,方便进行TM动态扩缩容和系统检查点的排查。

背景信息

传统的Flink参数更新方式需要重新启动作业,可能会出现业务中断、数据回追延迟和资源占用高峰等问题,导致作业停止时间变长,影响业务连续性。

动态更新参数功能通过REST请求发送至运行中的作业,它允许作业复用现有的JobManager和TaskManager容器,以原地重启、甚至不重启的方式来进行更新,从而降低重启的代价。配合资源预申请、State lazy加载等能力,进一步提升更新后的作业启动速度,将参数更新带来的断流时间从分钟级降到秒级。以一个典型的Source -> Map -> Sink作业为例,在动态扩缩容操作中,通过动态参数更新可以显著减少断流时间。断流时间对比情况如下图所示。

image.png

说明

您可以通过动态更新并发度来实现动态扩缩容TM,实际TM个数推算详情请参见配置作业资源

使用限制

  • 并发度系统检查点间隔系统检查点超时时间以及两次系统检查点最短间隔参数支持动态更新。如果您同时修改了无法动态更新的参数,需要重新启动作业才能使这些参数生效。

  • 仅实时计算引擎VVR 8.0.1及以上版本支持动态更新参数。

  • 专家模式(细粒度)不支持动态更新并发度。

注意事项

  • 动态更新为实验性功能,在动态更新参数时,业务并不是完全不中断。相比传统的参数修改模式,动态更新能够显著缩短中断时间,但中断的具体时长受到作业拓扑和状态大小等因素的影响,通常在5秒至1分钟之间。

  • 仅作业处于运行状态时,才能动态更新参数并让其生效。

  • 在动态更新并发度时,由于节点的并发度在某些场景下有特殊要求(例如:Global算子的并发度必须为1,不能更改;用户显式设置Kafka Source的并发度,以避免其超过其分区数),因此,实时计算Flink版会跳过已被设置并发度的节点,仅修改未指定并发度的节点。如果您希望节点的并发度可以被动态更新,建议不要通过DataStream#setParallelism方法或Source/Sink的并发度配置参数等方式指定算子的并发度。

操作步骤

  1. 进入作业运维页面。

    1. 登录实时计算控制台

    2. 单击对应工作空间操作列下的控制台

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

  2. 部署详情页签,单击资源配置运行参数配置区域右侧的编辑

  3. 修改可以被动态更新的参数取值后,单击保存

  4. 单击页面右上角的动态更新

    重要

    并发度系统检查点间隔系统检查点超时时间以及两次系统检查点最短间隔参数支持动态更新。参数值修改后,才会出现动态更新按钮,单击按钮后生效。如果您同时修改了无法动态更新的参数,需要重新启动作业才能使这些参数生效。

    image

  5. 在弹出的对话框中查看提示信息后,单击确定

    单击确定后,您会看到正在更新的标识。

    image.png

相关文档

  • 不支持动态更新的参数,您可以在部署详情页签配置后重启作业,详情请参见配置作业部署信息作业启动

  • 自动调优功能可以帮助您更合理地调整作业并发度和资源配置,解决相关性能调优问题,详情请参见配置自动调优

  • 作业智能诊断服务能够帮您监控作业健康状况,分析和诊断错误日志、异常运行和风险情况,并提供可理解和可操作的诊断建议,详情请参见作业智能诊断

  • 配置Task快速重启,可以降低Failover对作业的影响,详情请参见Task快速重启配置