11 月 28 - 30 日,北京迎来了入冬以来的第一场雪,2019 Flink Forward Asia(FFA)也在初雪的召唤下顺利拉开帷幕。尽管天气寒冷,FFA 实际到会人次超过 2000,同比去年增加近 100%。

Flink Forward 是由 Apache 官方授权举办的会议,每年在欧洲、北美洲、亚洲各举办一场。通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到业界围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者的盛会。去年 12 月 Flink Forward 首次在中国举办,是规模最大、参与人数最多的 Flink Forward 大会。今年 Flink Forward China 正式升级为 Flink Forward Asia,吸引到更多的关注,并于 11 月 28 日在北京开幕。

除了参会人数的迅速增加,多元化也是今年 FFA 的一大闪光点。笔者根据大会纲要数了一下,大约有超过 25 家来自北美,欧洲和亚洲的公司,高校以及科研机构参与分享了超过 45 个议题。国内外一线大牌互联网公司齐聚一堂,其乐融融。这也说明越来越多的业界公司更加看好 Flink,并且深度参与 Flink 的规划与发展,这无论是对 Flink 的未来还是 Flink 社区的发展都有非常积极的意义。

经过几年的发展,Flink 已经成为 Apache 最活跃的社区和在 Github 上访问量前三的项目。Github 的星数(代表项目受欢迎程度)在 2019 一年之内翻了一番。Apache Flink 在中国本土也更加的普及,下图列出了一些使用 Flink 作为实时计算解决方案的中国公司 logo。

笔者总体的参会感受:引擎一体化和生态多元化是 Flink 一以贯之的发展策略。引擎一体化指的是离线(batch),实时(streaming)和在线(application)应用在执行层面的一体化。生态多元化指的是对 AI 生态环境的搭建和对更多生态的支持,包括 Hive,Python,Kubernetes 等。

接下来,笔者将根据自己参加的议题聊一聊参会的体验和一些自己的思考,希望能对感兴趣的同学有所助益。

主会场议题

在主议题之前有两个环节值得提一提。一是作为主场的阿里云智能请出阿里集团 CTO 兼阿里云智能总裁张建锋作为开场嘉宾进一步强化阿里集团以数据智能为驱动,All in Cloud 的决心以及开源的 Flink 在此过程中起到的关键性作用。下图很好地提炼了他的演讲。

二是由阿里云天池平台和 Intel 联合举办的 Apache Flink 极客挑战赛颁奖仪式。本次比赛吸引了全球超过 4000 名参赛者,经过四个月的四轮角逐最终产生共 10 个优胜队伍。值得一提的是获奖选手中有两位女将,未来也期待能有更多的妹子参与进来,放一张照片瞻仰一下。

下面言归正传,聊一聊几个主议题。

Stateful Function

照例,第一个主议题由 Flink 一哥 Stephan Ewen 执棒。作为对 Flink Forward 柏林站的延续,Stephan 继续推广他对 Flink 作为应用服务场景(Applications and Services)通用引擎的展望和规划。简而言之,他认为 Flink 除了能够做到批流一体,Flink 框架对于事件驱动的在线应用也可以有效甚至更好的支持,如下图所示:

我的理解是他所指的应用服务场景(Applications and Services)和传统意义上的 OLTP 类似。云上对此类问题的主流解决方案是现在很火的 FaaS (Function as a Service),但通常会有以下四方面痛点:

  • Bottlenecked by state access & I/O
  • State Consistency Problem
  • Scalability of Database (storing the states)
  • Connections and Request rates

特别是在应用逻辑非常复杂的情况下,应用逻辑之间的组合调用会更加复杂,并且加剧上面四个痛点的复杂度。

同时你会发现上面的这些问题都和 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:

  • Stateful Function 到底要解决什么问题
  • 为什么 Stateful Function 比现有的解决方案更好

设想如下的场景,我们使用 Lyft 打共享车。在乘客发起打车请求以后,Lyft 首先会根据乘客的定位,空闲司机的状态,目的地,交通状况和个人喜好给乘客推荐不同类型车辆的定价。在乘客选择定价以后,Lyft 会根据乘客的喜好(比如有些司机被乘客拉了黑名单),司机的喜好(乘客也有可能被司机拉了黑名单),司机和乘客的相对位置以及交通状况进行匹配,匹配完成后订单开始。在这个例子中,我们会发现:

  • 有很多 Function Composition:乘客的喜好的计算,司机的喜好计算,司机和乘客相对位置计算,交通状况计算,以及最终匹配计算。
  • 状态的一致性的重要:在匹配的过程中如果发生错误,在保持状态一致性的情况下回滚非常重要。我们不希望一个乘客匹配给两个司机,也不希望一个司机匹配给两个乘客,更不希望乘客或者司机因为一致性问题无法得到匹配。

Stateful Function 在 Flink 开源 Runtime 的基础上很好的解决了 Function Composition 和 State Consistency 的问题。

下面讨论一下第二个维度:为什么 Stateful Function 比现有的解决方案更好。我的理解是 Stateful Function 提供了更清晰的 abstraction。Stateful Function 把消息传输、状态管理从 Function 中隔离出来,使得用户只需要关注 Function 计算逻辑本身,而不需要关注 Function 的调度,组合等问题,这也使得 Stateful Function 框架能有更多的自由度为 Function 调度组合等问题做优化。当然这只是我个人的理解,抛砖引玉。

Flink Heading Towards a Unified Engine

第二场由阿里巴巴实时计算负责人王峰(阿里花名:莫问)接棒,主要总结了 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。

总体得到的讯息是:

  • Flink SQL 在批模式下经过多方验证已经达到生产可用的状态
  • Flink SQL 可以在 Hive 生态上直接运行,没有迁移成本。
  • Flink SQL 可以做到批流在 SQL 优化,算子层以及分布式运行层的一体化。

另外这部分印象比较深刻的一点是:跑 TPC-DS benchmark,Flink 1.10 比 Hive-3.0 快 7 倍:

在 AI 部分,2019 Flink 重点主要在优化和铺垫 AI 的基础设施部分:

  • Flink 1.9 发布一套标准化的 Machine Learning Pipeline API (这个 pipeline 的概念最早在 Scikit-learn 中提出,在其他生态中也有广泛的采纳)。AI 的开发人员可以使用这套 API(Transformer,Estimator,Model)来实现机器学习算法。
  • 更好的支持 Python 生态。Flink 1.10 在 Table API 中可以支持 Python UDF,复用了 Beam 的 Python 框架来进行 Java 和 Python 进程之间的通讯。
  • Alink 开源发布。Alink 是基于 Flink 的机器学习算法库,最大的亮点是对流式和在线学习的支持。以下为开源地址,感兴趣的同学可以研究一下。

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,看完以后我发现现在机器学习模型训练和使用可以如此简单,感兴趣的同学可以找来看看。

Storage Reimagined for a Streaming World

第三个议题是由戴尔科技集团带来的流式存储议题: 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 进行批流一体的弹性数据处理”。

基于 Apache Flink 的大规模准实时数据分析平台

主议题的最后一场是 Flink 实践,是由 Lyft 带来的大规模准实时数据分析平台的分享。这里所说的准实时,指端到端数据延迟不超过 5 分钟,在 Lyft 内部主要用于数据交互式查询,下图是 Lyft 准实时平台架构图。

Flink 在整个架构中是用来做流数据注入的,Flink 向 AWS S3 以 Parquet 的格式持久化数据,并以这些原始数据为基础,进行多级 non-blocking 的 ETL 加工(压缩去重),建立实时数仓,用于交互式数据查询。

在这个分享中印象深刻的几点:

  • Flink 的高效性。据 Lyft 的大佬们讲,这个新的平台相较于先前基于 Kinesis Client 的 ingestion 相比较,仅数据注入部分的集群就缩减了 10%,所以他们对 Flink 的高效性是非常认可的。
  • Lyft 也提到,他们花了蛮多精力基于 Flink 的 StreamingFileSink 来解决 Flink 和 ETL 之间 watermark 的同步问题。其实我很希望他们能分享一下为何压缩去重(ETL)部分不也用 Flink 来做。如果是技术上的问题可以帮助 Flink 更好的完善自己。
  • Lyft 提到 Flink 的重启和部署会对 SLO 造成延迟影响,subtask 停滞会造成整个 pipeline 的停滞以及期望 Flink 能够有一套在 Kubernetes 环境下运行的方案。其实这里提到的几点也在其他的几场企业实践分享中被提到,这些也是当前 Flink 亟待解决的几大痛点。社区对这几点都有规划,分议题中有一场“Pluggable Shuffle Service and Unaligned Checkpoints”有针对 Flink 重启和停滞的讨论;“Optimize Apache Flink on Kubernetes with YuniKorn Scheduler”讨论了一些和 Kubernetes 应用相关的问题。

除了 Lyft,在分会场中也有很多企业参与分享了自己使用和深度参与 Flink 开发的经验和教训。Flink 不仅在国内公司中深受欢迎,很多北美欧洲的公司比如 Netflix,Uber 和 Yelp 也越来越多的使用和开发 Flink,感兴趣的同学可以关注一下分会场议题中的“企业实践”和“实时数仓”专场。

分会场议题

分会场议题主要围绕着上面四个主议题展开,分为五个专场:

  • Apache Flink 核心技术:主要针对 Flink 1.9 和 1.10 中比较核心的技术更新
  • 人工智能:除了主议题已经包括的,Flink+TensorFlow 的实践分享也很有趣
  • 企业实践:字节跳动,快手,滴滴,网易,爱奇艺,Bilibili,360 等分享的实践经验
  • 实时数仓:Netflix,美团,小米等分享的基于 Flink 的数仓平台
  • 开源大数据生态:和 Flink 生态相关的内容,主要包括 Zeppelin,Kubernetes,Hive 等等

由于篇幅关系,这里就不作展开了,贴个清单链接,方便大家查阅,所有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下载链接

点击「PPT下载」即可至Flink社区官网下载大会各会场PPT。

Tips:极少数嘉宾 PPT 仍在审核中,完成后会第一时间更新在链接里,大家记得及时刷新~

本文作者:梅源(Yuan Mei)

原文链接

本文为云栖社区原创内容,未经允许不得转载。

Flink Forward Asia 2019 - 总结和展望(附PPT下载链接)的更多相关文章

  1. [转帖]期待下一个十年|CIS 2019温馨回顾(附PPT下载)

    期待下一个十年|CIS 2019温馨回顾(附PPT下载) https://www.freebuf.com/fevents/222236.html shidongqi2019-12-06共26587人围 ...

  2. 欢迎收看 Flink Forward Asia 2021 峰会直播

    在线收看地址:https://developer.aliyun.com/special/ffa2021/live#?utm_content=g_1000316459 Flink 是由 Apache 软 ...

  3. Win7下python Scrapy一站式搭建全攻略(内附相关下载链接)

    写在前面: 好久没有登录博客了,意外看到之前的几篇文章都有不错的阅读量,开心极了,不过没有什么点赞和评论,大概是没有给大家带来什么切实的帮助吧.o(*////▽////*)q. 最近在NTU负责一个国 ...

  4. 【精彩回顾】第二届微医前端技术沙龙(附PPT下载)

    5 月 25 日,以「无界」为主题的第二届微医前端技术沙龙成功举办.本届沙龙的演讲题目涵盖了前端技术几个主要的应用场景,包括服务端.桌面端以及跨平台的开发.最近几年前端技术发展非常快,各种可以提高开发 ...

  5. 干货 | 国内互联网公司是如何做微服务实践的?(附PPT下载)

    微服务的概念最早由Martin Fowler与James Lewis于2014年共同提出,并随着Netflix最佳实践的发布而为业界所知.如今,在国内有了大量的微服务实践案例,5月18日,网易云联合云 ...

  6. MySQL安装详细步骤(附迅雷下载链接)

    环境:windows10.64bit.mysql 8.0.19 迅雷下载链接8.0版本 https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-in ...

  7. 基于 Golang 构建高可扩展的云原生 PaaS(附 PPT 下载)

    作者|刘浩杨 来源|尔达 Erda 公众号 ​ 本文整理自刘浩杨在 GopherChina 2021 北京站主会场的演讲,微信添加:Erda202106,联系小助手即可获取讲师 PPT. 前言 当今时 ...

  8. 一文带你了解 Flink Forward 柏林站全部重点内容

    前言 2019.10.7~9号,随着70周年国庆活动的顺利闭幕,Flink Forward 也照例在他们的发源地柏林举办了第五届大会.虽然还没有拿到具体的数据,不过从培训门票已经在会前销售一空的这样的 ...

  9. WEB学习路线2019完整版(附视频教程+网盘下载地址)

    WEB学习路线2019完整版(附视频教程+网盘下载地址).适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利.高薪水的职业了.所以现在学习web前端开发的技术人员也是 ...

随机推荐

  1. 【算法与数据结构】图的最小生成树 MST - Prim 算法

    Prim 算法属于贪心算法. #include <stdio.h> #define VERTEXNUM 7 #define INF 10000 typedef struct Graph { ...

  2. 【不错】MySQL 事务隔离级别

    一.事务描述 1.事务的四个特性 ACID 1. A:原子性 = 一个事务或者都成功.或者都失败: 2. C:一致性 = 在整个事务的生命周期里面,查询到的数据是一致的: MVCC多版本并发控制:利用 ...

  3. 机器学习【一】K最近邻算法

    K最近邻算法 KNN 基本原理 离哪个类近,就属于该类   [例如:与下方新元素距离最近的三个点中,2个深色,所以新元素分类为深色] K的含义就是最近邻的个数.在sklearn中,KNN的K值是通过n ...

  4. input输入框的的input事件和change事件以及change和blur事件的区别

    input输入框的 oninput事件 ,在用户输入的时候触发,只要元素值发生变化就会触发 input输入框的 onchange事件 ,要在输入框失去焦点的时候触发事件,当鼠标在其他地方点击一下才会触 ...

  5. Docker最详细入门教程

    Docker原理.详细入门教程 https://blog.csdn.net/deng624796905/article/details/86493330 阮一峰Docker入门讲解 http://ww ...

  6. mysql5.7 修改用户密码

    修改vi /etc/my.cnf,增加skip-grant-tables可以免密码登录mysql use mysql ; update user set authentication_string=P ...

  7. C#中的委托和事件(一)——delegate

    前言 来说一说委托(delegate)和事件(event),本篇采取的形式是翻译微软Delegate的docs中的重要部分(不要问我为什么微软的docs有中文还要读英文,因为读中文感觉自己有阅读障碍- ...

  8. k3 cloud凭证过账的时候提示凭证号不连续

    解决办法:进入凭证查询页面,点击凭证业务操作下面的凭证整理 提交整理完成即可

  9. https://www.cnblogs.com/cncc/p/7804511.html?foxhandler=RssReadRenderProcessHandler

    https://www.cnblogs.com/cncc/p/7804511.html?foxhandler=RssReadRenderProcessHandler 一.本文主要是使用Costura. ...

  10. Servlet实现Cookie自动登录,并显示保存的用户信息

    转自:https://blog.csdn.net/qq_29612963/article/details/51100565