40亿条/秒!Flink流批一体在阿里双11首次落地的背后
随后大数据处理技术来到了第二个时代, Spark 和 Flink 两款计算引擎在新时代陆续登场。Spark 相对于 Hadoop 和 Hive,具备更加完善的批处理表达能力和更加优秀的性能,这让 Spark 社区迅速发展,并逐步超越了 老牌的 Hadoop 和 Hive,成为批处理技术领域的主流技术。但 Spark 并未止步于批处理技术,很快 Spark 也推出了流计算解决方案,即 Spark Streaming,并不断进行改进完善。但大家都知道 Spark 的核心引擎是面向“批处理”概念的,不是一款纯流式计算引擎,在时效性等问题上无法提供极致的流批一体体验。但 Spark 基于一套核心引擎技术,同时实现流和批两种计算语义的理念是非常先进的,与其具备相同流批一体理念的还有另一款新引擎 Flink。Flink 正式亮相比 Spark 稍微晚一些,但其前身是来自德国柏林工业大学 2009 年的研究项目 Stratosphere,至今也有 10 年之久。Flink 的理念和目标也是利用一套计算引擎同时支持流和批两种计算模式,但它和 Spark 相比选择了不同的实现路线。Flink 选择了面向“流处理”的引擎架构,并认为“批”其实是一种“有限流”,基于流为核心的引擎实现流批一体更加自然,并且不会有架构瓶颈,我们可以认为 Flink 选择了 ”batch on streaming“ 的架构,不同于 Spark 选择的 “streaming on batch” 架构。 Flink 实现完善的流批一体架构也不是一蹴而就的,在早期的 Flink 版本中,Flink的流和批无论在 API 还是在Runtime 上都还没有达到彻底的统一。但从 1.9 版本开始,Flink 开始加速在流批一体上进行完善和升级,Flink SQL 作为用户使用的最主流 API,率先实现了流批一体语义,使得用户只需学习使用一套 SQL 就可以进行流批一体的开发,大幅节省开发成本。 但是 SQL 并不能解决用户的所有需求。一些定制化程度较高,比如需要精细化的操纵状态存储的作业还是需要继续使用 DataStream API。在常见的业务场景中,用户写了一份流计算作业后,一般还会再准备一个离线作业进行历史数据的批量回刷。但是 DataStream 虽然能很好的解决流计算场景的各种需求,但却缺乏对批处理的高效支持。 因此,Flink 社区在完成 SQL 流批一体升级之后,从 1.11 版本也开始投入大量精力对 DataStream 进行流批一体能力的完善,在 DataSteam API 上增加批处理的语义,同时结合流批一体 Connector 的设计,让 DataStream API 能够在流批融合场景下对接 Kafka 和 HDFS 等不同类型流批数据源。 接下来流批一体的迭代计算 API 也将被引入到 DataStream 中,进一步解锁一系列机器学习的场景。 在当前 Flink 主版本中,不管是 SQL 还是 DataStream API,在流批一体概念上都还是流计算和批计算功能的一个结合体。用户编写的代码,需要选择使用流的方式跑,还是批的方式跑。但有些业务场景已经提出更高的要求,即流批混合的需求,并且自动的在批和流之间自动切换,例如:数据集成以及数据入湖场景,用户的需求是先把数据库的全量数据同步到 HDFS 或者云存储上,然后再自动实时同步 DB 中的增量数据上去,并在同步过程中进行 流批混合的 ETL 数据处理,Flink 也将在后续继续支持更加智能的流批融合场景。 Flink “流批一体”技术在阿里巴巴的发展历程 阿里巴巴是国内最早选择 Flink 开源技术的公司,在 2015 年我所在的搜索推荐团队希望面向未来5-10 年的发展,选择一款新的大数据计算引擎,用来处理搜索推荐后台海量商品和用户数据,由于电商行业对时效性具备非常高的诉求,因此我们希望新的计算引擎既有大规模批处理能力,也具备毫秒级实时处理能力,即一款流批统一的引擎,当时 Spark 的生态已经走向成熟,并且通过 Spark Streaming 提供了流批一体的计算能力,而 Flink 当时刚刚在前一年成为Apache顶级项目,还是一个冉冉升起的新星项目,当时团队内部针对 Spark 和 Flink 经过了一段时间的调研和讨论,一致认为虽然 Flink当时生态并不成熟,但其基于流处理为核心的架构对于流批一体的支持更加合适,因此非常迅速的做出决定,在阿里内部基于开源 Flink 进行完善和优化,搭建搜索推荐的实时计算平台。 经过团队一年的努力,基于 Flink 的搜索推荐实时计算平台成功的支持了2016 年的搜索双 11,保证了搜索推荐全链路实时化。通过在阿里最核心业务场景的落地证明,也让全集团都认识了 Flink 实时计算引擎,并决定将全集团实时数据业务都将迁移到 Flink 实时计算平台上。又经过一年的努力,Flink 在 2017 年双 11 不负众望,非常顺利的支持了全集团双 11 的实时数据业务,包括 GMV 大屏等最核心的数据业务场景。 2018 年 Flink 开始走向云端,阿里云上推出了基于 Flink 的实时计算产品,旨在为广大中小企业提供云计算服务。饮水思源,阿里巴巴不仅希望利用 Flink 技术解决自己业务的问题,同样也希望能够推动 Flink 开源社区更快的发展,为开源技术社区做出更多贡献,因此阿里巴巴在 2019 年初收购了 Flink 创始公司和团队 Ververica,开始投入更多资源在 Flink 生态和社区上。到了 2020 年,国内外主流科技公司几乎都已经选择了 Flink 作为其实时计算解决方案,我们看到 Flink 已经成为大数据业界实时计算的事实标准。 接下来,Flink 社区不会停止技术创新,在阿里巴巴业务场景中流批一体技术已经从理论走向落地。2020 年的双 11,Flink 流批一体技术在天猫营销决策核心系统中给出了精彩的表现,加上之前已经在搜索推荐中成功运行的流批一体索引构建以及机器学习流程,充分验证了5 年前我们大胆选择 Flink 技术体系的正确性,相信未来我们将会在更多公司看到 Flink 流批一体技术的落地。 “流批一体”技术创新,推动 Flink 开源社区蓬勃发展 Flink 坚持流批一体技术创新之路,也自然推动 Flink 开源社区的高速发展和生态的加速繁荣。我们欣喜的看到,随着 Flink 在国内更多公司的加速落地,来自中文社区力量日益庞大,已经开始逐渐超越国外成为主流。 首先最明显的是用户数量的增多,从今年 6 月份起,Flink 中文邮件列表的活跃度开始超越英文邮件列表。随着大量的用户涌入 Flink 社区,也带来了更多的优秀代码贡献者,有效的促进了 Flink 引擎的开发迭代。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |