Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
引言 ApacheFlink社区很开心地宣布,在经过4个月的版本开发之后,FlinkCDC3.4.0版本已经正式发布。FlinkCDC是流行的流式数据集成框架,CDC3.4.0版本强化了框架对于高频表结构变更的支持,框架支持了batch执行模式,新增ApacheIcebergSink连接器支持,用户可以使用FlinkCDC将数据库数据全增量一体化实时写入Iceberg数据湖。我们推荐社区用户升级到FlinkCDC3.4.0版本。 一、版本数据 FlinkCDC3.4.0版本吸引了51位社区贡献者,累计完成259次代码提交,关闭65个issue。这些代码贡献主要分布在连接器组件、运行时引擎、transform等模块。 图-1:FlinkCDC3.4版本数据 现在,您可以访问FlinkCDCRelease页面[1]下载FlinkCDC3.4.0的二进制包,也可以在文档网站[2]上访问最新版本的文档。如果您在使用时遇到任何问题,欢迎在Flink用户邮件列表[3]、用户钉群、GitHubDiscussions[4]或FlinkJIRA看板[5]上提出问题或发起讨论。 二、版本概览 此次发版,FlinkCDC重点改进和功能如下: 图-2:FlinkCDC3.4版本概览 FlinkCDC3.4.0为数据集成Pipeline作业支持了batch执行模式,batch执行模式可以高效实现全量数据同步的需求;在表结构演进功能上完成了高频表结构变更场景的性能优化;同时增加了对YARNApplication提交模式的支持;新增了IcebergSink连接器,支持CDC数据实时写入Iceberg,此外还对Paimon、MySQL和MongoDB连接器做了完善和优化。 三、特性解读 3.1FlinkCDC框架 Batch执行模式 在FlinkCDC3.4版本中,CDCPipeline框架提供了execution.runtime-mode参数,当配置该参数为BATCH时,会创建并提交Flinkbatch作业。在只需执行全量数据同步的业务场景下,使用batch模式能够有效降低作业资源消耗,提升数据同步效率。 目前仅支持MySQLSource连接器对接到了batch模式,且需将启动参数配置为snapshot(仅快照)模式。 SchemaEvolution优化 FlinkCDC3.4版本优化了多表同步情况下,作业初始化阶段的协调耗时,并修复了高频率执行表结构变更时,偶现的作业挂起问题,同时优化了作业异常时打印更多表结构和数据信息便于问题分析排查。 YARNApplication部署模式 FlinkCDCCLI在3.4版本中支持通过./bin/flink-cdc.sh-tyarn-application命令创建一个新的yarn-application部署作业。在此模式下,框架支持创建一个专用的JobManager并提交作业,并在作业执行完成后自动销毁。 3.2FlinkCDC连接器 IcebergPipelineConnector ApacheIceberg业界领先的数据湖格式,FlinkCDC3.4.0版本提供了IcebergSink连接器,现在用户可以使用CDCYAML作业将来自数据库的CDC数据高效写入到ApacheIceberg中,构建基于Iceberg的实时数据湖。 PaimonPipelineConnector Paimon是国内实时数据湖的主流格式,在FlinkCDC3.4版本中,社区升级Paimon版本到1.0.1,这是ApachePaimon1.0的稳定版本。同时优化了checkpoint阶段执行commit的用时,新增对无主键表的写入支持,同时还支持写入完整的Changelog。 MySQLCDCConnector MySQL作为重点连接器,在FlinkCDC3.4版本中,社区支持了将变更流转换为仅追加(AppendOnly)流,从而实现逻辑删除的功能。同时提供优先处理无界的分片的配置,能够有效避免全量阶段运行时间过长导致TaskManager处理最后一个大分片引发的OOM问题。 MongoDBCDCConnector 针对社区用户对MongoDB对oplog中的操作类型访问需求,CDC3.4版本对MongoDBCDC连接器增加op_type元数据,支持读取oplog中的操作类型。 3.3FlinkCDC缺陷修复和改进 除了上述核心特性外,FlinkCDC3.4版本也包含了多个缺陷修复和改进,包括: 修复了Pipeline作业在有状态重启后会重新推导表结构的问题。 修复了Pipeline作业在使用transform时不支持使用不满足java变量名规则字段的问题。 修复了Pipeline作业在使用transform时不支持覆盖表中已经存在的同名列的问题。 修复了Pipeline作业在transform中部分算术函数不支持处理null值的问题。 修复了MySQL连接器开启scan.binlog.newly-added-table.enabled时意外捕获其他表的问题等。 四、未来规划 FlinkCDC3.5版本的规划已经在社区发起讨论,新的版本一方面将会继续聚焦社区用户的共性需求,完善FlinkCDC框架能力,如脏数据处理、数据限流等API设计;另一方面会丰富Pipeline连接器生态,在社区贡献者特别是海外贡献者的驱动下支持PostgreSQL等海外重点生态;同时面向AI时代,也会完善目前FlinkCDC已有的AImodel能力,对接更多AI生态。 致谢 特别感谢以下51名开发者对FlinkCDC3.4.0版本作出的贡献(按字母排序)!: 911432,chenhongyu,ConradJam,FerencCsaky,gongzhongqiang,HangRuan,HeWang,hiliuxg,HongshunWang,JasonZhang,JiabaoSun,JunboWang,Jzjsnow,KevinCaesar,KevinWang,Kunni,LeonardXu,lidoudou1993,linjianchang,liuxiaodong,lvyanquan,lzshlzsh,MOBIN-F,moses,NorthLin,Olivier,ouyangwulin,Petrichor,proletarians,qinghuanwang,QingshengRen,RobinMoffatt,RunkangHe,SergeiMorozov,Seung-MinLee,ShawnHuang,stayrascal,Thorne,Timi,UmeshDangat,Vincent-Woo,VinhPham,wenmo,Wink,wudi,XinGong,yoheiyoshimuta,yuanoOo,yuxiqian,zhangzheng [1]https://github.com/apache/flink-cdc/releases/tag/release-3.4.0 [2]https://nightlies.apache.org/flink/flink-cdc-docs-release-3.4/ [3]https://flink.apache.org/what-is-flink/community [4]https://github.com/apache/flink-cdc/discussions [5]https://issues.apache.org/jira/projects/FLINK/summary 更多内容 活动推荐 阿里云基于 Apache Flink 构建的企业级产品-实时计算 Flink 版现开启活动: 新用户复制点击下方链接或者扫描二维码即可0元免费试用 Flink + Paimon 实时计算 Flink 版(3000CU*小时,3 个月内) 了解活动详情:https://free.aliyun.com/?utm_content=g_1000395379&productCode=sc