本文为您介绍将自建开源Flink集群的流式作业(包含Table API、SQL和Datastream)迁移至阿里云实时计算Flink全托管版的迁移优势、迁移方案和相关文档。
迁移优势
Flink全托管产品按CU售卖,根据业务需要按需购买,可以降低成本。另外提供提交作业、管理作业、收集指标和监控报警等一站式功能,可以提高作业开发运维效率。与开源Flink完全兼容,提供GeminiStateBackend(自研高性能状态存储引擎)等高增值功能,可以提升作业稳定性。将开源自建Flink迁移至Flink全托管后,您只需专注于业务开发,无需关心集群运维,也可以直接使用开源的Auto-Pilot功能进行作业调优。
迁移方案


- 创建集群
使用阿里云账号创建Flink全托管集群,以便将自建Flink作业迁移过来。为了保证上下游迁移后的网络连通性,创建Flink全托管集群时,请选择和自建Flink集群相同VPC。创建Flink全托管集群的步骤详情,请参见开通Flink全托管。
在创建Flink全托管集群前,需要评估Flink全托管的资源。阿里云实时计算Flink版产品按照CU计费,1 CU=1 Core CPU + 4GiB MEM。每个计算的CU节点每秒钟处理能力详情如下表所示。作业类型 处理能力 注意事项 简单作业(指仅仅进行数据同步,或者在数据同步中涉及一些简单的过滤清洗) 每个计算CU可处理5000条数据,平均每条数据1 KB。 需要考虑作业数,每个作业的JM不提供计算能力,但需要至少0.5 CU。 中等作业(指包含维表Join,基础窗口的作业) 每个计算CU可处理1000条数据,平均每条数据1 KB。 高等作业(指包含双流Join,大状态存储的作业) 每个计算CU可处理500条数据,平均每条数据1 KB。 说明 以上估算方法是一种非常粗略的估算方法,仅供参考。您需要按照您自己业务数据的最高峰的情况来规划资源。例如,如果您当前集群的实际资源使用情况为Vcores:48,Memory:80 GB,即可估算迁移后的CU数为MAX(48,80/4 )=48CU。 - 作业迁移
您需要将自建Flink集群上的作业包,修改相关的配置后,手动上传到Flink全托管控制台,并创建对应的作业。不同类型的作业迁移步骤示例详情,请参见概述。
- 数据正确性验证数据质量是实时计算数据产出对业务的重要保障,和实时计算任务日常变更一样,迁移工作也需要对新任务产出的数据质量进行验证。通常,建议您采用迁移新任务和原有任务并行双跑的方式,在新运行一段时间,满足数据对比条件后,验证新任务和原有任务的数据产出是否一致,达到预期的数据质量。理想情况下,迁移的新任务数据产出和原任务完全一致,就无需进行额外的差异分析。
实时任务7x24小时持续在运行,但在大部分情况下产出的数据还是具备时间周期特性的,这就给数据对比提供了可行性。例如,聚合任务按小时或天维度计算聚合值,清洗任务加工任务按天进行分区等。在数据对比时就可以根据对应的时间周期来进行对比。例如小时周期的任务实际已完整处理数据多个小时后,就可以对比处理过的小时数据,而天维度的聚合值,通常就需要等待新任务处理完完整的一天数据后才能对比。
根据任务产出的生成周期特性和数据规模,您可以结合业务的实际情况,使用恰当的对比方法。对比方法详情如下表所示。数据规模 对比 中小数据规模 建议进行全量数据对比。例如,窗口聚合逻辑的数据,对每一个key、每一个窗口的聚合结果进行一一对比,验证其正确性。 较大数据规模 如果全量对比的代价高、可行性低,则可以考虑采用抽样的方式进行。例如窗口聚合逻辑的数据,随机抽取部分key、部分窗口的聚合结果进行一一对比,验证其正确性。但需注意抽样方式的合理性,避免单一性产生对比漏洞从而误判数据质量。 - 业务稳定性验证
业务稳定性和数据质量同样重要,任务的稳定性通常要求实现较长时间的平稳运行(建议至少7天)。进入稳定性观察期后,建议开启和原任务相同级别的监控、报警设置,期间主要观察任务运行时的处理延迟、有无异常Failover以及Checkpoint情况是否健康等。如果达到了和原有任务同等或更高的稳定性,那稳定性验证就完成了。
- 业务迁移
第三步中的数据正确性、业务性能和稳定性确认后,即可开展业务迁移工作,即将Flink作业中使用的备用结果表替换原有任务的结果表,提供给业务方使用,并将原有生产链路停止下线,整个迁移工作就圆满结束了。