Flink1.9重大改进和新功能

 

 一、Flink1.9.0的里程碑意义

 

 二、重构 Flink WebUI

        Flink社区讨论了现代化 Flink WebUI 的提案,决定采用 Angular 的最新稳定版来重构这个组件。从Angular 1.x 跃升到了 7.x 。重新设计的 UI 是 1.9.0 的默认UI,不过有一个按钮可以切换到旧版的WebUI。

点击上图所示按钮可切换至旧版Web UI:

 

扫描二维码关注公众号,回复: 9405265 查看本文章

       新版更加漂亮,性能方面也表现更好。

       注意:未来,新版UI不保证跟旧版 WebUI 的功能是对齐的,且待新版本稳定后将会完全移除旧版WebUI。

三、架构改动

Flink老架构及存在的问题

Flink设计理念与当前架构

       Flink的设计理念如下图:

 

存在的问题

1)从Flink用户角度

       1)开发的时候需要在两个底层API中进行选择

       2)不同的语义、不同的connector支持、不同的错误恢复策略…

       3)Table API也会受不同的底层API、不同的connector等问题的影响

2)从Flink开发者角度

       1)不同的翻译流程,不同的算子实现、不同的Task执行…

       2)代码难以复用

       3)两条独立的技术栈需要更多人力功能开发变慢、性能提升变难,bug变多

Flink新架构

       既然批是流的一个特例,是否可以。。。?一个大胆的想法(流批统一):

 

        Blink本身就在做去DataSet的工作,在 Blink 捐赠给 Apache Flink 之后,社区就致力于为 Table API 和SQL 集成 Blink 的查询优化器和 runtime。第一步,我们将 flink-table 单模块重构成了多个小模块(FLIP-32)。这对于 Java 和 Scala API 模块、优化器、以及 runtime 模块来说,有了一个更清晰的分层和定义明确的接口。

 

        紧接着,社区扩展了 Blink 的 planner 以实现新的优化器接口,所以现在有两个插件化的查询处理器来执行 Table API 和 SQL:1.9 以前的 Flink 处理器和新的基于 Blink 的处理器。基于 Blink 的查询处理器提供了更好地 SQL 覆盖率(1.9 完整支持 TPC-H,TPC-DS 的支持在下一个版本的计划中)并通过更广泛的查询优化(基于成本的执行计划选择和更多的优化规则)、改进的代码生成机制、和调优过的算子实现来提升批处理查询的性能。除此之外,基于 Blink 的查询处理器还提供了更强大的流处理能力,包括一些社区期待已久的新功能(如维表 Join,TopN,去重)和聚合场景缓解数据倾斜的优化,以及内置更多常用的函数。

        因此,Flink1.9架构长成了这个样子:

不过, Blink 的查询处理器的集成还没有完全完成,暂时先不忙上生产。

猜你喜欢

转载自www.cnblogs.com/dajiangtai/p/12363816.html