本文由我进行整理,整理后发布至开源社区。内容源自阿里巴巴技术专家宋辛童 (五藏) 在 8 月 7 日线上 Flink Meetup 分享的《Flink 1.14 新特性预览》。主要内容为:
- 简介
- 流批一体
- Checkpoint 机制
- 性能与效率
- Table / SQL / Python API
- 总结
GitHub 地址
https://github.com/apache/flink
社区文章仓库整理地址
https://github.com/czy006/FlinkClub
欢迎大家给 Flink 点赞送 star~
此文章为 8 月 7 日的分享整理,1.14 版本最新进展采用注释的方式在文末进行说明。
一、简介
1.14 新版本原本规划有 35 个比较重要的新特性以及优化工作,目前已经有 26 个工作完成;5 个任务不确定是否能准时完成;另外 4 个特性由于时间或者本身设计上的原因,会放到后续版本完成。[1]
1.14 相对于历届版本来说,囊括的优化和新增功能点其实并不算多。其实通过观察发版的节奏可以发现,通常在 1-2 个大版本后都会发布一个变化稍微少一点的版本,主要目的是把一些特性稳定下来。
1.14 版本就是这样一个定位,我们称之为质量改进和维护的版本。这个版本预计 8 月 16 日停止新特性开发,可能在 9 月份能够和大家正式见面,有兴趣可以关注以下链接去跟踪功能发布进度。
- Wiki:https://cwiki.apache.org/confluence/display/FLINK/1.14+Release
- Jira:https://issues.apache.org/jira/projects/FLINK/versions/12349614
二、流批一体
流批一体其实从 Flink 1.9 版本开始就受到持续的关注,它作为社区 RoadMap 的重要组成部分,是大数据实时化必然的趋势。但是另一方面,传统离线的计算需求其实并不会被实时任务完全取代,而是会长期存在。
在实时和离线的需求同时存在的状态下,以往的流批独立技术方案存在着一些痛点,比如:
- 需要维护两套系统,相应的就需要两组开发人员,人力的投入成本很高;
- 另外,两套数据链路处理相似内容带来维护的风险性和冗余;
- 最重要的一点是,如果流批使用的不是同一套数据处理系统,引擎本身差异可能会存在数据口径不一致的问题,从而导致业务数据存在一定的误差。这种误差对于大数据分析会有比较大的影响。
在这样的背景下,Flink 社区认定了实时离线一体化的技术路线是比较重要的技术趋势和方向。
Flink 在过去的几个版本中,在流批一体方面做了很多的工作。可以认为 Flink 在引擎层面,API 层面和算子的执行层面上做到了真正的流与批用同一套机制运行。但是在任务具体的执行模式上会有 2 种不同的模式:
- 对于无限的数据流,统一采用了流的执行模式。流的执行模式指的是所有计算节点是通过 Pipeline 模式去连接的,Pipeline 是指上游和下游计算任务是同时运行的,随着上游不断产出数据,下游同时在不断消费数据。这种全 Pipeline 的执行方式可以:下图是不同的执行模式:
-
- 通过 eventTime 表示数据是什么时候产生的;
- 通过 watermark 得知在哪个时间点,数据已经到达了;
-
- 通过 state 来维护计算中间状态