11 月 28 - 30 日,北京迎来了入冬以来的第一场雪,2019 Flink Forward Asia(FFA)也在初雪的召唤下顺利拉开帷幕。尽管天气寒冷,FFA 实际到会人次超过 2000,同比去年增长近 100%。git
Flink Forward 是由 Apache 官方受权举办的会议,每一年在欧洲、北美洲、亚洲各举办一场。经过参会不只能够了解到 Flink 社区的最新动态和发展计划,还能够了解到业界围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者的盛会。去年 12 月 Flink Forward 首次在中国举办,是规模最大、参与人数最多的 Flink Forward 大会。今年 Flink Forward China 正式升级为 Flink Forward Asia,吸引到更多的关注,并于 11 月 28 日在北京开幕。github
除了参会人数的迅速增长,多元化也是今年 FFA 的一大闪光点。笔者根据大会纲要数了一下,大约有超过 25 家来自北美,欧洲和亚洲的公司,高校以及科研机构参与分享了超过 45 个议题。国内外一线大牌互联网公司齐聚一堂,其乐融融。这也说明愈来愈多的业界公司更加看好 Flink,而且深度参与 Flink 的规划与发展,这不管是对 Flink 的将来仍是 Flink 社区的发展都有很是积极的意义。算法
通过几年的发展,Flink 已经成为 Apache 最活跃的社区和在 Github 上访问量前三的项目。Github 的星数(表明项目受欢迎程度)在 2019 一年以内翻了一番。Apache Flink 在中国本土也更加的普及,下图列出了一些使用 Flink 做为实时计算解决方案的中国公司 logo。架构
笔者整体的参会感觉:引擎一体化和生态多元化是 Flink 一以贯之的发展策略。引擎一体化指的是离线(batch),实时(streaming)和在线(application)应用在执行层面的一体化。生态多元化指的是对 AI 生态环境的搭建和对更多生态的支持,包括 Hive,Python,Kubernetes 等。app
接下来,笔者将根据本身参加的议题聊一聊参会的体验和一些本身的思考,但愿能对感兴趣的同窗有所助益。框架
在主议题以前有两个环节值得提一提。一是做为主场的阿里云智能请出阿里集团 CTO 兼阿里云智能总裁张建锋做为开场嘉宾进一步强化阿里集团以数据智能为驱动,All in Cloud 的决心以及开源的 Flink 在此过程当中起到的关键性做用。下图很好地提炼了他的演讲。运维
二是由阿里云天池平台和 Intel 联合举办的 Apache Flink 极客挑战赛颁奖仪式。本次比赛吸引了全球超过 4000 名参赛者,通过四个月的四轮角逐最终产生共 10 个优胜队伍。值得一提的是获奖选手中有两位女将,将来也期待能有更多的妹子参与进来,放一张照片瞻仰一下。机器学习
下面言归正传,聊一聊几个主议题。分布式
照例,第一个主议题由 Flink 一哥 Stephan Ewen 执棒。做为对 Flink Forward 柏林站的延续,Stephan 继续推广他对 Flink 做为应用服务场景(Applications and Services)通用引擎的展望和规划。简而言之,他认为 Flink 除了可以作到批流一体,Flink 框架对于事件驱动的在线应用也能够有效甚至更好的支持,以下图所示:性能
个人理解是他所指的应用服务场景(Applications and Services)和传统意义上的 OLTP 相似。云上对此类问题的主流解决方案是如今很火的 FaaS (Function as a Service),但一般会有如下四方面痛点:
特别是在应用逻辑很是复杂的状况下,应用逻辑之间的组合调用会更加复杂,而且加重上面四个痛点的复杂度。
同时你会发现上面的这些问题都和 State 的存储(storage),读写(access)以及一致性(consistency)相关,而 Flink 的 Stream Processing 框架能够很好的解决这些和状态相关的问题。因此 Stateful Function 在 Flink 现有的框架上拓展了对 Function Composition 和 Virtual Instance(轻量级的 Function 资源管理)的支持,以达到对应用服务场景(Application)的通用支持。
目前全部 Stateful Function 代码均已开源,在得到社区承认后也会 merge 回 Apache Flink,有兴趣的同窗能够去官网本身实践一下:https://statefun.io/ 。在分议题 Apache Flink 核心技术中也有一场专门讲 Stateful Function 的实现,使用和 demo,小伙伴们也能够去感觉一下,题目叫“Stateful Functions: Unlocking the next wave of applications with Stream Processing”。
看到这里可能仍是会以为不太直观,我结合本身的理解再多说两句,咱们能够从两个维度理解 Stateful Function:
设想以下的场景,咱们使用 Lyft 打共享车。在乘客发起打车请求之后,Lyft 首先会根据乘客的定位,空闲司机的状态,目的地,交通情况和我的喜爱给乘客推荐不一样类型车辆的订价。在乘客选择订价之后,Lyft 会根据乘客的喜爱(好比有些司机被乘客拉了黑名单),司机的喜爱(乘客也有可能被司机拉了黑名单),司机和乘客的相对位置以及交通情况进行匹配,匹配完成后订单开始。在这个例子中,咱们会发现:
Stateful Function 在 Flink 开源 Runtime 的基础上很好的解决了 Function Composition 和 State Consistency 的问题。
下面讨论一下第二个维度:为何 Stateful Function 比现有的解决方案更好。个人理解是 Stateful Function 提供了更清晰的 abstraction。Stateful Function 把消息传输、状态管理从 Function 中隔离出来,使得用户只须要关注 Function 计算逻辑自己,而不须要关注 Function 的调度,组合等问题,这也使得 Stateful Function 框架能有更多的自由度为 Function 调度组合等问题作优化。固然这只是我我的的理解,抛砖引玉。
第二场由阿里巴巴实时计算负责人王峰(阿里花名:莫问)接棒,主要总结了 2019 年 Apache Flink 在一体化引擎发展方面的成果和将来的方向。他认为将来 Flink 的发展趋势是一体化:包括离线(batch),实时(streaming)和在线(application)一体化。在此基础上,也须要把拥抱 AI 和云原生归入到一体化中。后面的内容就是围绕这三方面来展开的。
对于批流融合,经过 1.9 和 1.10 两个版本的发布,Flink 在 SQL 和 Table API 的层面以及 Flink runtime 层面对批流模式已经作到统一。对于 Flink SQL,在 1.10 这个版本里面,已经能够实现完整的 DDL 功能,兼容 Hive 生态系统而且支持 Python UDF。
整体获得的讯息是:
另外这部分印象比较深入的一点是:跑 TPC-DS benchmark,Flink 1.10 比 Hive-3.0 快 7 倍:
在 AI 部分,2019 Flink 重点主要在优化和铺垫 AI 的基础设施部分:
https://github.com/alibaba/alink
在 AI 部分还有一个很值得期待的项目是 Flink AI 明年的一个重点投入方向:AI Flow。AI Flow 为 AI 链路定制了一套完整的解决方案:包括从 data acquisition,preprocessing,到 model training & validation & serving 以及 inference 的一整套链路。这个方案是针对解决如今 AI 链路里面数据预处理复杂,离线训练和在线预测脱钩等问题定制的,让咱们拭目以待。
此外还有一个重要的方向是 Flink 对云原生生态的支持,具体来讲就是与 Kubernetes 生态的深度融合。Kubernetes 环境能够在 multi-user 的场景下提供更好的隔离,对 Flink 在生产的稳定性方面会有所提高。Kubernetes 普遍应用在各类在线业务上,Flink 与 Kubernetes 的深度融合能够在更大范围内统一管理运维资源。Kubernetes 生态自己发展很快,能够给 Flink 在生产中提供更好的运维能力。后面 Lyft 和其余企业在分享中也提到但愿 Flink 对 Kubernetes 能够原生地支持,也有以上这些方面的考虑。Flink 在 1.10 版本发布后能够原生地运行在 Kubernetes 之上。
阿里巴巴经过 1.9 和 1.10 两个版本历经 1 年左右将 Blink 中比较通用的部分悉数回馈给 Apache Flink 社区,回馈总代码数超过一百万行。阿里内部的 Blink 内核也逐步会由 Flink 内核替换,而且推出基于 Flink 内核的企业版 Ververica Platform,明年 1 月会正式商用。
另外这部分演讲中的两个 demo 让我眼前一亮。一个是基于 Flink + Hive + Zeppelin 的 Flink SQL demo,看完之后能够深入感觉到“能够在 Hive 生态上直接运行,没有迁移成本“,以及“一套 SQL,批流一体运行”的真正含义。还有一个是 Alink ML 基于 Jupyter 的 demo,看完之后我发现如今机器学习模型训练和使用能够如此简单,感兴趣的同窗能够找来看看。
第三个议题是由戴尔科技集团带来的流式存储议题: Pravega。
他们的主要观点是随着流式计算在大企业用户中愈来愈普遍的应用,流式计算对存储也产生了新的需求:流式存储。需求来自两个方面:一是大型企业用户但愿计算框架流程化繁为简,从而提出对流式计算存储一体化的需求;二是批流的计算一体化自己也对存储提出批流一体化需求。
在后面的分会场议题开源大数据生态中,Pravega 还有一场更偏技术的分享,包括总体的设计架构,如何保证 exactly once 语义,Stream Segment 如何更方便的提供 scaling up/down 等等,感兴趣的同窗也能够看看,题目叫“Delivering stream data reliably with Pravega”。
这个议题自己也颇有趣。不可避免的,咱们会想到流式存储和一般意义上的消息队列系统(例如 Kafka)之间有什么区别,毕竟 infinite retention 的消息队列系统也能够被当作是一个 stream storage。另外一个比较有趣的问题是一体化的抽象应该在哪一个层面上来作,以及如何作。换言之,读写是否应该和存储分离,只提供统一的API?由于笔者对 storage 这块儿细节不是特别了解,这里就不班门弄斧了,感兴趣的小伙伴咱们能够私下讨论。分议题中还有一场关于 Pulsar 的,也相关,题目叫“基于 Pulsar 和 Flink 进行批流一体的弹性数据处理”。
主议题的最后一场是 Flink 实践,是由 Lyft 带来的大规模准实时数据分析平台的分享。这里所说的准实时,指端到端数据延迟不超过 5 分钟,在 Lyft 内部主要用于数据交互式查询,下图是 Lyft 准实时平台架构图。
Flink 在整个架构中是用来作流数据注入的,Flink 向 AWS S3 以 Parquet 的格式持久化数据,并以这些原始数据为基础,进行多级 non-blocking 的 ETL 加工(压缩去重),创建实时数仓,用于交互式数据查询。
在这个分享中印象深入的几点:
除了 Lyft,在分会场中也有不少企业参与分享了本身使用和深度参与 Flink 开发的经验和教训。Flink 不只在国内公司中深受欢迎,不少北美欧洲的公司好比 Netflix,Uber 和 Yelp 也愈来愈多的使用和开发 Flink,感兴趣的同窗能够关注一下分会场议题中的“企业实践”和“实时数仓”专场。
分会场议题主要围绕着上面四个主议题展开,分为五个专场:
因为篇幅关系,这里就不做展开了,贴个清单连接,方便你们查阅,全部PPT资料也会连接在文末。
三天的 FFA,感触颇深。Flink 创始人之一 Ververica CEO Kostas Tzoumas 感慨说,五年前当他们 5 个初创刚刚开始 Flink 这个项目的时候没法想象今天 Flink 能有如此大的生态和如此广的应用。虽然我没法深切体会到他的感觉,可是当前 Flink 社区的繁荣和 Flink 的应用广度是有目共睹的,但更重要的问题是:将来咱们如何延续这种繁荣。Flink 在经历了高性能流式引擎,批流一体两代发展后,咱们确实须要思考一下将来的 Flink 是什么样的。
在这届 FFA 中一直强调一体化和多元化的概念,也就是开篇讲的引擎一体化和生态多元化,具象化来讲有三点:Stateful Function,拥抱AI,云原生。再到下一个层面也给 Flink 引擎自己提出更多的要求,这是挑战固然也是机遇。古语云瑞雪兆丰年, FFA 在北京的初雪中圆满落下帷幕,也让咱们共同努力,把握好机遇一块儿迎接挑战,共创美好的 Flink 2020。最后,分享一张一哥 Stephan 在 FFA 的 cool 照做为全篇的收尾,你们一块儿感觉一下。
附录:
2019 Flink Forward Asia 主会场视频回顾
2019 Flink Forward Berlin 柏林站分享
点击「PPT下载」便可至Flink社区官网下载大会各会场PPT。
Tips:极少数嘉宾 PPT 仍在审核中,完成后会第一时间更新在连接里,你们记得及时刷新~
本文做者:梅源(Yuan Mei)
本文为云栖社区原创内容,未经容许不得转载。