大数据文摘出品
作者:魏子敏、笪洁琼
Flink 1.11 即将 Release 啦!
作为备受瞩目的新一代开源大数据计算引擎,Flink 无疑已成为 Apache 基金会和 GitHub 最为活跃的项目之一。
自 2014 年正式开源, Flink 发展非常迅速,在 GitHub 上其访问量在 Apache 项目中位居前三。去年年底 Flink Forward Asia 2019 大会公布,仅仅 2019 年一年的时间,Flink 在 GitHub 上的 star 数量就翻了一倍,Contributor 数量也呈现出持续增长的态势。
GitHub 地址指路:
https://github.com/apache/flink
越来越多的企业和开发者正在不断地加入 Flink 社区,中国开发者也为 Flink 开发做出了巨大的贡献。最近,Flink 终于要迎来1.11版本的更新,不仅对 SQL 和 PyFlink 的支持进行了优化,还有 Hive 的兼容性,以及增强了拓展资源(GPU)的调度支持。
将在6月下旬发版的的 Flink 1.11 重要功能特性更新如下:(目前已在官方文档更新)
增强 Web UI 功能
全新 Source API
DataStream API 支持 Kafka 载体实现子图 Failover
提升 DDL 易用性(动态 Table 属性,Primary Key支持)
增强 Hive 流批一体化(Hive Streaming sink,Filesystem Connector)
支持被 Zeppelin 集成,所有发布功能可用
增强 PyFlink(Pandas支持,SQL DDL/Client集成),提升 Python UDF 性能
支持 Application 运行模式、增强 K8s 功能以及 Docker 镜像统一
统一 Job Master 内存配置
支持 GPU 调度
调整 Savepoint 文件路径方便移动
Runtime 实现 Unalinged 模式提速反压场景下 Checkpoint
Flink 1.11 版本更新之际,大数据文摘跟阿里巴巴资深技术专家,实时计算负责人,也是 Flink 中文社区发起人王峰 (莫问)聊了聊,关于 Flink 此次新版的重点,以及未来社区的发展规划,莫问老师都给了我们一波官方剧透。
Flink 版本更新:上百万行代码
1.11版本是 Flink 在版本上的重要更迭,更新代码就有上百万行。
总的来说,这次的新版本有以下几个重要更新:
增加支持 Python 的 UDF
PyFlink 在 Flink 的生态中非常重要,因为 Flink 的开发者也大多会使用Java、SQL、Python 语言。在最新版本1.11中,增加了支持 Python 的 UDF,这样当 Python 开发者用 Flink 去开发一个完整的流计算项目时,就可以方便地处理数据。
同时,在 AI 项目开发中,有些工程师也喜欢用 Python 处理数据,所以计算团队必须要为 Flink 的使用者考虑,让所有开发者都能更好地使用 Flink。
进一步改进 SQL 的易用性
在1.9版本之前,Flink 社区用户使用最多的还是基于 Java 的 DataStream API,而 Table 和 SQL 还处于早期探索的阶段。在过去的两个大版本(1.9和1.10),Flink 社区花了非常大的代价将 Table 和 SQL 做了完整的重构,加入了在阿里集团服务多年的 Blink planner,让 Table 和 SQL 做到了真正的生产可用。
从1.11版本开始,Blink planner 将会变成 SQL 的默认优化器。同时,社区也收集了过去几个版本中用户对 SQL 功能和易用性的反馈,做了大量的改进工作。比如呼声非常高的让 Flink SQL 能够直接解析数据库的 Binlog 日志(如 Debezium、Canal),以及更简洁的 DDL 写法,在查询语句中动态修改 table 参数等等。通过社区不断完善,相信 Flink SQL 除了在核心能力一直保持优越之外,也能够让广大用户觉得越来越好用,做到真正降低流计算业务的门槛。
加强 AI 方向的场景应用
Flink 社区一直在加强 AI 场景应用的功能。AI 这些年一直是一个非常流行的领域,包括大家熟知的 TensorFlow 还有 PyTorch,都是用户经常使用的平台。AI 未来会应用在各种场景中,比如数据分析、监控模型等。莫问称,新版本会积极为 AI 各种场景提供更强大的批流融合的数据处理能力,让用户能更好地进行数据清洗、特征提取、样本生成,以及预测模型的框架构建。
此外,Flink 可以提供传统机器学习模型的训练,比如贝叶斯、SVM、随机森林这类的模型计算,以及 Alink 提供的其它种类机器学习模型。未来,Flink 社区会继续提供关于 Flink 流式计算框架的迭代,不断提升传统机器学习算法的能力,增加算法种类。
目前 AI 行业缺少一整套工具链,来实现从数据处理、训练模型再到整体上线的完整流程。即之前提及的 Flink AI Flow,Flink 将联合 TensorFlow、Kubernetes,和 AirFlow 这些开源技术,进行整合形成一套完整的工具。当用户想要使用深度学习模型训练时可以使用 TensorFlow,想用传统学习算法时可以用 Flink ML Lib 或 Alink,Flink AI 会通过开源技术使用户都能获得这样的体验,减少切换工具的不便。
与离线大数据系统的集成
虽然大数据实时化是大家公认的趋势,但同时不可否认的是,还是有非常多的公司还处在离线大数据系统的建设之中。如何帮助这部分用户顺畅的将离线数据链路进行实时化升级改造,也是 Flink 社区一直在追求的目标。
Flink 1.11 版本在之前兼容 Hive Meta、数据格式、自定义函数的基础之上,还新加入了实时读写 Hive 数据,支持将 Hive 数据作为维表,以及 Hive 部分 DDL 和 DML 的兼容性。这样一来,用户可以在 Flink SQL CLI 上直接使用 Hive 方言的 DDL 和 DML 语句,同时还可以使用 Flink 将数据实时的写入 Hive。在此基础之上,Flink 还可以自动监听 Hive 数据表,当有新的 partition 和数据出现的时候,能够自动进行读取并处理。所有的这一切操作,都不影响原来的离线链路。有了这些功能之后,用户可以完全在一个 Hive 的基础设施之上,搭建出适合自己业务需求的准实时链路,将原来天级或者小时级的端到端延迟,缩短到比如10分钟的量级。
除了 Hive 之外,现在市面上也有许多新兴的存储(如 Delta、Iceberg、Hudi)可以做到类似的效果。比如像数据湖架构,这种新的数据湖存储的架构都是流批一体的存储架构,增量视图可以看到数据的变化,可以用不同的增量视图来处理数据,也可以全量视图来处理数据,还可以把云计算的存储中心或者 HDFS 中的所有数据都共享到数据湖,用户就可以使用计算引擎实时处理数据,也可以去批量的处理数据,还能准实时的处理数据。
Flink 提供流批一体的计算能力,未来和这些流批一体的存储进行有机的结合之后,将进一步帮助用户简化系统架构,提升业务支持的效率。
“选择往往比努力更重要”:Flink 在阿里的成长史
“选择往往比努力更重要。”回忆起阿里选择 Flink 的过程,莫问到现在依然感慨万千。
2015年,阿里搜索算法团队遇到了一个问题:整个淘宝和天猫的商品都需要实时更新到在线的搜索和推荐引擎中,以及要根据用户在线行为进行实时个性化的搜索排序和推荐,这么大规模的计算量,应该如何解决?
在面临巨大挑战的业务需求大背景下,阿里搜索团队迫切需要找到一个能承受巨大计算量并且实时化的计算引擎。当时的他们有三个方向可以选择:Apache Storm,Apache Spark,以及 Apache Flink。通过综合多方面因素的权衡和判断,莫问的团队最终选择了 Flink 作为实时计算引擎。作为一个14年才进入 Apache 的年轻项目,当时的 Flink 是如何吸引了阿里搜索团队的注意?
莫问告诉我们,团队首先看中的是 Flink 的架构设计,尤其是作为一个纯流式思想来做大数据处理,不仅可以基于 Kappa 结构来做流式数据处理,还可以以流为核心做批流融合的计算能力。
花了一年的时间,阿里团队对 Flink 早期版本做了不少优化和增强,2016 年双11就在阿里搜索和推荐场景上线了。由于是第一次在双十一场景里尝试新框架,搜索团队也不太确定这个 Flink 究竟能否承受住阿里的大规模计算量。让莫问都没想到的是,16年双11,Flink 的表现非常稳定,这一点已经超过了搜索团队的预期,甚至比当时阿里在用的几款流计算引擎方案表现的还要好,潜力十足。
也正是通过这次稳定的表现,整个阿里集团也对 Flink 的性能有了一定的信心,希望在这个框架的基础上,统一所有的流式实时计算技术方案。之后也正如我们所见,阿里集团顶住了包括双十一、618 等全年不断的大大小小促销活动。
有了这些成功的经验,阿里也对 Flink 有了更大信心,不仅支持整个阿里集团的实时计算,还在阿里云上开始对外提供基于 Flink 的实时计算产品服务。发展至今,该产品已经持续为 500 多家知名企业提供实时计算的保障。
“希望 Flink 社区更繁荣,更多元化”
“希望 Flink 社区更繁荣,更多元化。“
莫问告诉我们,阿里一直强调团队的初衷不是希望阿里来控制 Flink 社区,而是希望阿里为 Flink 社区作出更多贡献,带动Flink社区的快速发展,同时吸引更多的公司和开发者加入到 Flink 社区中来,实现社区的多元化,让 Flink 技术能够服务到更多行业和场景。
“所以我们会把阿里内部对 Flink 一些比较合适的改进和优化都贡献到社区中,让更多公司能够受益,也非常希望看到其他公司也能够将 Flink 在自己的场景进行大规模的应用,并将各自的需求和改进都贡献给 Flink 社区,通过社区共建相互受益。”
2019年阿里巴巴收购 Flink 商业公司 Ververica 后,投入了大量的精力发展社区:在来自阿里的 PMC(项目管理委员会)成员提议和推动下,Apache Flink 社区建立了中文邮件列表、组织万人群热烈讨论 Flink 问题、联合 30 余家公司共同举办 Flink Meetup 20+场、引入 Flink 国际盛会 Flink Forward 、持续输出免费的 Flink 学习教程以降低 Flink 入门门槛。
截止2020年5月,共有674位开发者加入 Apache Flink 社区成为 Contributor。Contributor 的名单里不乏来自阿里巴巴、腾讯、字节跳动、奇虎360、网易、OPPO、小米、快手、小红书、亚信科技、唯品会等国内知名企业的工程师们。不仅有越来越多来自企业的开发者,也有更多高校学生、IC 成为 Apache Flink Contributor。在 Committer 方面,除了阿里之外,Flink 社区也不乏来自腾讯和头条的资深开发者受邀成为项目的 Committer。他们也非常积极的在社区分享各自公司内部的使用场景,并对 Flink 内核代码进行持续的完善和改进。
Flink 社区需要更多的资源去推动社区的进步,阿里也希望能看到社区生态的繁荣和生态化。
Flink 的未来:做什么?
提到未来 Flink 社区的研发方向,莫问告诉我们,社区目前正在专注以下三个方向:
首先,推进实时和准实时数据处理的进一步融合。使得 Flink 不仅能够毫秒级的处理流式数据,同时也能够对有限数据集进行快速分析、处理和更新,为用户提供端到端的实时化数据分析体验。
其次,提供大数据和 AI 全链路流程端到端的完整体验,AI 场景离不开大数据计算和处理能力。例如经典的 AI 包括数据的预处理、特征、样本计算和模型训练等,Flink 可以结合 Tensorflow,Airflow,Kubeflow 等技术,提供一套完整流程管理方案去串联这其中的各个环节。
第三,Stateful Function,利用 Flink 在 Event Driven 和 Stateful Computing 上的优势,使得 Flink 成为一款在线函数计算框架,让 Flink 从实时向在线计算演进。
未来已来,将成熟稳定的技术贡献给社区,共建良好社区生态才能真正的让用户放心使用,从用户角度出发,为用户的需求考虑,才能最终获得一个用户喜欢的 Flink 计算引擎。携手伙伴持续发展 Flink 社区,让所有的用户用上最好的技术,这就是阿里一直想做的事情。
提前了解 Flink 1.11 Table & SQL 新版详情,可点击「阅读原文」可查看 Apache Flink Committer 分享的《Flink 1.11 Table & SQL 深度解读》~
关注 Flink 中文社区,获取更多技术干货
你也「在看」吗?????