Flink作为当前最活跃的流计算引擎之一,版本更新速度相对较快。及时升级作业到新版本,可以使用新版本的功能和特性。本文将为您介绍如何升级实时计算Flink版作业的引擎版本。
注意事项
实时计算Flink版引擎发布前,会进行丰富的兼容性测试,原则上同一大版本下的小版本间升级是兼容的,大版本间升级不保证兼容。引擎版本详情和作业快照(Savepoint)在Flink版本之间的兼容性详情请参见引擎版本号及其含义和Compatibility Table。
切换作业版本时,需注意:
小版本升级时State兼容,可使用版本切换之前的系统检查点或作业快照。例如,vvr-4.0.15-flink-1.13切换至vvr-4.0.18-flink-1.13。
大版本切换时State不兼容,需无状态重启。例如,vvr-4.0.15-flink-1.13切换至vvr-6.0.2-flink-1.15。
SQL或DataStream作业中的Flink相关依赖版本需要与作业选中的Flink版本保持一致。
社区从Flink 1.13.0版本开始,默认的SQL Planner使用了阿里巴巴贡献给开源社区的BlinkPlanner,和之前的版本存在部分差异,差异详情请参见 Apache Flink 1.13.0 发布公告。因此请注意从社区Flink 1.13.0之前的版本,迁移至VVR 4.0(基于社区Flink 1.13.0版本)及以上版本的实时计算Flink版时,可能涉及部分语法和API不兼容的问题。
升级流程
步骤一:备份作业并部署新作业
为了确保作业运行的稳定性,建议通过克隆创建一个完全相同的新作业,并在新作业上进行作业引擎版本升级。
SQL
登录实时计算管理控制台,单击目标工作空间操作列下的控制台。
新作业切换引擎新版本。
新作业使用新版本时,建议您选择稳定版(STABLE)或推荐版本(RECOMMENDED)。这些版本修复了其他版本的已知缺陷和相关问题,除了可以使用最新的功能,还提供了更强的稳定性保证。
单击新作业编辑区右侧的更多配置,在引擎版本切换作业版本后,单击右上方的部署。
在
页面,单击目标作业名称,在部署详情页签的基础配置部分,检查新部署作业版本是否切换成功。
DataStream
单击部署。
步骤二:老作业备份作业状态
在查看状态生成总览。
页面,单击目标作业,在作业详情中的状态集管理页签查看作业状态集,详情请参见如果您的作业属于有状态计算,那么在升级版本时,首要考虑的是状态能否复用。
升级前请先手动生成一个作业快照,以便升级出现异常时可以快速回滚业务。具体操作请参见手动创建作业快照。
重要原则上同一大版本下的小版本间升级兼容,大版本间升级不保证兼容。如果兼容,则新版本的引擎可以读取旧版本引擎生成的作业快照,反之并不保证。
从VVR 6.x版本起,系统支持原生格式和标准格式两种作业快照格式。前者生成速度更快,后者兼容性更好。因此,如果希望将作业的引擎版本升级至同一大版本下的更高小版本,建议在作业快照生成时选择原生格式;如果希望将作业的引擎版本升级至更高的大版本,建议选择标准格式。
如果您的作业是无状态的,可以直接进入下一步。
(可选)步骤三:停止老作业
在作业停止。
面,单击老作业操作列下的停止。操作详情请参见如果下游写入幂等或者业务上能接受重复数据,可以考虑新老作业同时运行。
步骤四:启动新作业
如果您的作业是有状态的:在有状态启动中选择从指定状态恢复,选择老作业创建的作业快照。
如果您的作业是无状态的,可以直接选择无状态启动新作业。
作业启动步骤详情请参见作业启动。
步骤五:观察线上情况并删除老作业
通常情况下,如果升级后作业可以正常启动并完成第一个系统检查点,可以视为升级初步成功。但仍然建议您观察一下业务数据的正确性,以确保升级结果的完整性。
当作业正常运行且验证数据正确性后,可以考虑手动删除升级之前的作业快照及作业,作业快照删除具体操作请参见手动删除指定作业快照。
升级失败回滚处理
如果在升级后发现作业无法启动或业务数据异常,建议您立即停止作业,将作业版本切换到升级前的版本,并通过升级前保存的作业快照恢复业务。同时,可以通过提交工单反馈相关问题。
如果您无法跟踪整个升级过程,建议配置作业失败告警,以便在发生异常时及时通知您,避免业务受损,具体操作请参见配置监控告警。