开启Flink作业动态扩缩容
操作场景
在实际作业运行中,由于作业的数据流量变化,导致所需计算资源不同,造成流量较小时计算资源浪费,流量较大时计算资源不足以满足计算所需。
DLI提供的动态扩缩容功能可以根据当前作业的负载情况,例如:数据输入输出量、数据输入输出速率、反压等情况,动态的调整当前作业所用的计算资源,提升资源利用率。
开启Flink作业动态扩缩容后,系统将根据Flink作业的实际资源需求动态调整资源分配。当弹性资源池中剩余的Pod资源足以支持作业的最小资源需求时,系统将自动减少作业所在节点的数量,确保作业高效运行,同时提高资源的利用效率。
当前仅Flink 1.12版本的作业支持开启动态扩缩容。
使用须知
- 在Flink作业进行动态扩缩容时如果队列资源被抢占,剩余资源不满足作业启动所需资源则可能存在作业无法正常恢复的情况。
- 在Flink作业进行动态扩缩时后台作业需要停止继而从savepoint恢复,因此未恢复成功前,作业无法处理数据。
- 因扩缩容过程中需要触发savepoint,因此必须配置obs桶,并保存日志,同时请注意开启checkpoint。
- 扩缩容检测周期不要设置过小,避免频繁启停作业。
- 扩缩容作业恢复过程中的时间长短受savepoint的大小影响,如果保存点较大,可能恢复时间较慢。
- 如果需要调整动态扩缩容的配置项,则需要停止作业进行编辑,并提交运行才能生效。
操作步骤
Flink作业动态扩缩容适用于Flink Opensource SQL作业和Flink Jar作业。
- 登录DLI管理控制台。
- 单击“作业管理 > Flink作业”。
- 选择要开启动态扩缩容的作业,单击操作列下的编辑。
- Flink Opensource SQL作业单击“自定义配置”,配置动态扩缩容参数。
- Flink Jar作业单击“优化参数”框,配置动态扩缩容参数。
表1 动态扩缩容参数说明 名称
默认值
描述
flink.dli.job.scale.enable
false
该配置表示是否开启动态扩缩的功能,即是否允许根据作业的负载调整作业的使用资源量和是否允许DLI根据作业优先级调整作业的使用资源量。
当前配置为false时,表示不允许。
当前配置为true时,表示允许。
默认值为false。
flink.dli.job.scale.interval
30
该配置表示检测当前作业是否需要动态扩缩的时间周期,其单位为分钟,默认值为30。例如30表示每隔30分钟进行一次检测,判断是否需要对作业使用资源量进行扩缩。
注意:只有当用户开启动态扩缩时,该配置才有意义。
flink.dli.job.cu.max
用户CU初始值
该配置表示当前作业在进行动态扩缩时允许使用的最大CU数,如果用户未配置则默认值为该作业的初始总CU数。
注意:该配置值不能小于用户配置的总CU数,且只有当用户开启动态扩缩时,该配置才有意义。
flink.dli.job.cu.min
2
该配置表示当前作业在进行动态扩缩时允许使用的最小CU数,其默认值为2。
注意:该配置值不能大于用户配置的总CU数,且只有当用户开启动态扩缩时,该配置才有意义。