2020年,阿里巴巴实时团队提出“批流一体”的理念,期望依托Flink框架解决企业数据分析的以下几个核心问题。
1、批流一体的理念
(1)、统一开发人员角色,现阶段企业数据分析有两个团队,一个团队负责实时开发,一个团队负责离线开发,在流批一体的理念中,期望促进两个团队的融合。
(2)、统一数据处理技术,不管实时开发,还是离线开发都是用Flink框架进行,如非必要,尽可能少用其它系统
(3)、当前企业数据分析,有两套班子,两套技术体系,两套计算模式,导致实时数据和离线数据经常对不上,期望通过Flink SQL的方式,让离线和实时计算逻辑保持一致。
2、批流一体的方向
Flink框架是一个纯粹的计算框架,没有数据存储的组件进行配套,在企业进行批流一体的实践中,演化出了三种不同的路径,分别是基于Flink Streaming Sink技术的STG/ODS层实时化、基于实时OLAP引擎的Upsert实时实时化、基于Flink 流计算模式的实时化。
- 基于Flink Streaming Sink等相关技术,实现对HDFS文件系统的实时写入,通常将增量数据写入到数据仓库的STG或ODS层,然后基于写入的数据进行半小时或一小时作业的调度配置。
- 基于Flink Stream/Flink SQL等相关技术,利用实时OLAP引擎提供的Upsert功能,将实时数据增量更新到OLAP引擎中,或者将实时数据加工成宽表后实时更新到OLAP引擎中,然后在OLAP引擎上使用SQL方式进行数据计算。
- 基于Flink Stream/Flink SQL等相关技术,直接得到分析结果。
3、流批一体的实践
- ODS层实时化方向:将Kafka的数据实时写入到HDFS,已经非常普及,成为数据入仓的重要手段。
- OLAP引擎实时方向:1、阿里巴巴 主要在推进 Flink + Hologres的解决方案,有一套比较推荐的方式,先通过Flink计算宽表,然后将数据写入到Hologres进行实时的聚合或点查操作。这套方向属于商业化的方案,需要付费。 2、非商业化的方案中,目前国内比较热门是 Flink + Drois 方案,类似的Flink + Kudu方案在国内的热度在下降(也可选择)。 3、基于实时OALP引擎构建完整的数据仓库,包含STG、ODS、DWD/DWS、ADS等分层模型,这个方案比价适合数据量较小的公司。
- 单纯使用Flink框架的方向:主要是在尝试和探索Flink SQL在流数据、批数据上的效果。
4、其它类似的理念
- Spark框架的“流批一体”,在大数据技术栈中Spark是一个非常重要的框架,使用Spark既可以处理离线数据、实时数据、机器学习还能做图计算,目前在国内外使用的都比较广泛,特别是国外是远超Flink的,只是在国内不经常发声导致关注度降低不少。