大数据文摘出品
作者:魏子敏、笪洁琼
Flink框架上!新!啦!
作为备受瞩目的新一代开源大数据计算引擎,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)的调度支持。
Flink框架将在6月下旬上线的1.11版本的更新情况:(目前已在官方文档更新)
增强Web UI功能全新Source APIDataStream 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模式提速反压场景下CheckpointFlink框架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方向的场景应用
就像在1.9版本更新中提到的,Flink最新版本也会加强对AI场景应用的功能。
AI这些年一直是一个非常流行的领域,包括大家熟知的TensorFlow还有PyTorch,基本上都是用户经常使用的平台。AI的未来会应用在各种场景中,比如数据分析,监控模型。
莫问称,新版本会积极为AI各种场景提供更好的批流融合的数据处理系统,让用户能更好地进行数据清洗、特征提取、样本生成,以及预测模型的框架构建。
此外,Flink可以提供传统式机器学习模型的训练,比如贝叶斯、SVM、随机森林这类的模型计算,还有Alink提供的其它种类机器学习模型,未来会继续提供关于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就在阿里搜索和推荐场景上线了。
由于是第一次在双十一场景里尝试新框架,搜索团队也不太确定这个新框架,能不能承受住阿里的大规模计算量。让莫问都没想到的是,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社区,让所有的用户用上最好的技术。
暂无评论内容