分享

Apache Flink 1.9.0版本详解



问题导读

1.Apache Flink 1.9.0 有什么样的里程碑意义?
2.Apache Flink 1.9.0 有哪些重点改动?
3.Apache Flink 1.9.0 有哪些新功能?




摘要:Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能。目前,Apache Flink 1.9.0版本已经正式发布,该版本有什么样的里程碑意义,又具有哪些重点改动和新功能呢?本文中,阿里巴巴高级技术专家伍翀就为大家带来了对于Apache Flink 1.9.0版本的介绍。

演讲嘉宾介绍:

本次分享主要分为以下三个方面:

Flink 1.9.0的里程碑意义

Flink 1.9.0的重点改动和新功能

总结

一、Flink 1.9.0的里程碑意义

下图展示的是在2019年中阿里技术微信公众号发表的两篇新闻,一篇为“阿里正式向Apache Flink贡献Blink代码”介绍的是在2019年1月Blink开源并且贡献给Apache Flink,另外一篇为“修改代码150万行!Apache Flink 1.9.0做了这些重大修改!”介绍的是2019年8月Bink合并入Flink之后首次发版。之所以将这两篇新闻放在一起,是因为无论是对于Blink还是Flink而言,Flink 1.9.0的发版都是具有里程碑意义的。
20190910135458_0ebc551cc7137178d2b923659620ae85_2.jpeg

在2019年年初,Blink开源贡献给Apache Flink的时候,一个要点就是Blink会以Flink的一个分支的形式开源,Blink会将其主要的优化点都Merge到Flink里面,一起将Flink做的更好。当我们结合这两篇报道来看的时候,能够发现当初Blink的一些新功能如今已经能够在Flink1.9.0版本里面看到了,也能看出Flink社区的效率和执行力都是非常高的。

二、Flink 1.9.0的重点改动和新功能

这部分将为大家介绍Flink 1.9.0的重点改动和新功能。

架构升级

整体而言,如果一个软件系统引入了较大的改动,那基本上是架构升级带来的,对于Flink而言也不例外。想必熟悉Flink的同学对于下图中左侧的架构图一定不会陌生,在Flink的分布式流式执行引擎之上有一整套相对独立的DataStream API和DataSet API,它们分别负责流计算作业和批处理作业。在此基础之上Flink还提供了一个流批统一的Table API和SQL,用户可以使用相同的Table API或者SQL来描述流计算作业和批处理作业,只需要在运行时告诉Flink引擎以流模式运行还是以批模式运行即可,Table层将会把作业优化成为DataStream作业或者DataSet作业。但是Flink 1.8版本的架构存在一些弊端,那就是DataStream和DataSet在底层共享的代码并不多。其次,两者的API也不同,因此就会导致上层重复开发的工作量比较大,长期来看就会使得Flink的开发和维护成本越来越大。

20190910135458_0ebc551cc7137178d2b923659620ae85_3.jpeg

基于上述问题,Blink在架构上进行了一些先行的探索,经过和社区密切的讨论之后确定了Flink未来的架构路线。也就是在Flink未来的版本中,DataSet的API会被完全移除掉,SteamTransformation会作为底层的API来描述批作业和流作业,Table API和SQL会将流作业和批作业都翻译到SteamTransformation上。除此之外在Flink 1.9中为了不影响之前版本用户的体验,还需要一种能够让新旧架构并存的方案。基于这个目的,Flink的社区开发人员也做了一系列努力,提出了上图中右侧的Flink 1.9架构设计,将API和实现部分做了模块的拆分,并且提出了一个Planner接口,能够支持不同的Planner具体实现。 Planner的具体工作就是优化和翻译成物理执行图等,也就是架构图中间Query Processor所做的工作。Flink将原本的实现全部移动到了Flink Query Processor中,将对接新架构的从Blink Merge过来的功能都放到了Blink Query Processor。这样就能够实现一举两得,不仅能够使得Table模块拆分之后变得更加清晰,更重要的是也不会影响老版本用户的体验,同时能够使得用户享受到Blink的新功能和优化。

Table API & SQL 重构和新功能

在Table API & SQL 重构和新功能部分,Flink在1.9.0版本中也Merge了大量从Blink中增加的SQL功能。这些新功能都是在阿里巴巴内部经过千锤百炼而沉淀出来的,相信能够使得Flink更上一层台阶。这里挑选了一些比较重要的成果为大家介绍,比如对于SQL DDL的支持,重构了类型系统,高效流式的TopN,高效流式去重,社区关注已久的维表关联,对于MinBatch以及多种解热点手段的支持,完整的批处理支持,Python Table API以及Hive的集成。接下来也会简单介绍下这些新功能。

20190910135458_0ebc551cc7137178d2b923659620ae85_4.jpeg

SQL DDL:在以前如果要注册一个Source或者Table Sink,必须要通过Java、Scala等代码或者配置文件进行注册,而在Flink 1.9版本中则支持了SQL DDL的语法直接去注册或者删除表。

20190910135458_0ebc551cc7137178d2b923659620ae85_5.jpeg

重构类型系统:在Flink 1.9版本中实现了一套全新的数据类型系统,这套全新的类型系统与SQL标准进行了完全对齐,能够支持更加丰富的类型。这套全新的类型系统也为未来Flink SQL能够支持更加完备和完善的功能打下了坚实的基础。

20190910135458_0ebc551cc7137178d2b923659620ae85_6.jpeg
TopN:在Flink 1.9版本提供强大的流处理能力以及社区期待已久的TopN来实时计算排行榜,比如能够实时计算销量前十的店铺。

20190910135458_0ebc551cc7137178d2b923659620ae85_7.jpeg

高效流式去重:在现实的生产系统中,很多ETL作业或者任务没有做到端到端的一致性,这就导致明细层可能存在重复数据,这些数据交给汇总层做汇总时就会造成指标偏大,进而多计算了一些值,因此在进入汇总层之前往往都会做一个去重,这里引入了一个流计算中比较高效的去重功能,能够以比较低的代价来过滤重复的数据。

维表关联:能够实时地关联MySQL、HBase、Hive表中数据。

MinBatch&多种解热点手段:在性能优化方面,Flink 1.9版本也提供了一些性能优化的手段,比如提升吞吐的MinBatch的优化以及多种解热点手段。

20190910135458_0ebc551cc7137178d2b923659620ae85_8.jpeg


最新经典文章,欢迎关注公众号



---------------------

作者:eastday
来源:eastday
原文:Apache Flink 1.9.0版本新功能介绍


已有(2)人评论

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条