聊聊Blink开源和Flink社区近况

前几天 Blink 开源的消息刷了朋友圈,因为笔者一直关注着社区的发展。所以今天想从我个人的角度来聊聊 Blink 开源,社区 merge Blink 的计划,以及最近发生的一些很有意义的事情。

这次 Blink 开源的主要目的是让社区的开发者们能尽早地尝试一些他们感兴趣的功能与改进。我觉得最核心的贡献包括:

  • Stream SQL 的新功能和性能优化:如维表Join、TopN、支持迟到数据和提早输出的Window、有效解决Agg数据倾斜问题等。
  • 完整且高性能的 Batch SQL:跑通全部 TPC-H/TPC-DS (比当前 Flink Batch SQL 快 10x 以上),能够读取 Hive meta 和 data 。
  • 易用性提升:焕然一新的Web UI,与 Zeppelin 的集成,交互式编程的支持。

Stream SQL 上的功能补齐和性能优化经阿里内部多年千锤百炼打磨而来,毫无疑问是社区用户们最为翘首以盼的功能,笔者认为这部分的开源和回馈能迅速将 Flink SQL 的流式计算能力提升到高度成熟级别。

同时,Blink 对Batch SQL 上的完善和优化弥补了 Flink 长久以来在批处理能力上的不足,这也为未来Flink深度统一批流大业打下了更为坚实的基础。

另外值得一提的是这次Blink开源的新UI,是由 NG-ZORRO 的作者 vthinkxie 亲自操刀,一改以往 Apache 项目 Web UI 略为朴素的特点。新UI的简洁美观程度比起商业化产品可谓有过之而无不及,其易用性更是得到阿里内部的深度检验与高度认可。

回到 Blink 开源本身,要谈论其意义首先要清楚 Blink 与 Flink 的关系。从阿里多篇公开的报导中我们也了解到 “Blink 永远不会成为另外一个项目,如果后续进入 Apache 一定是成为 Flink 的一部分”,这点从 Blink 最后是以 Flink 的分支方式开源进一步得到了印证。另外 Blink 开源的核心改进将来都有希望合并进 Flink,这必将极大加速 Flink 的发展,同时也会为 Flink 打开更广阔的舞台。对于 Flink 用户来说,无疑也是个好消息,用户不仅能享受到更好用的产品,同时也拥有了更多想象的空间。相信未来几年的大数据领域,也会因此而变得格外精彩。

接下来聊一个大家都格外关心的话题,Blink 的特性将如何合并到 Flink 中

合并 Blink 的方案是在社区公开讨论的,目前方案已经基本确定,从社区大神 Stephan 和 Timo 发起的方案讨论邮件中我们可以了解到合并的大致方案。

首先总体方针:尽可能地与目前的 Table API 保持兼容,使用户无感知地升级。

改动最大的两个模块会是:(1) SQL/Table Query Processor,(2) batch scheduling/failover/shuffle 。

对于 Query Processor(下文简称 QP),社区计划逐渐地构建起一个基于Blink的 QP,默认仍使用 Flink 原生的 QP,Blink QP 会以插件的方式存在,用户可以使用时可以配置成用 Blink QP 来执行(这非常像 Beam 的 runner 架构)。直到 Blink QP 完全合并进来了且稳定了,会作为默认的 QP 实现,而 Flink QP 最终会被移除。为了完成这个方案,flink-table 模块需要做一些模块的拆解和重构,为了尽快拆解完模块和重构,社区可能会短期内暂缓一些 Table API/SQL 的功能开发和贡献。更详细的方案可以看下 FLIP-32(见文末链接[3])。目前这块相关的开发工作已经在进行中了。

对于 batch scheduling & failover 来说,目前已经有一个在进行中的调度重构方案了 FLINK-10429。当这个完成后,Blink 的实现可以以插件的方式作为新的 scheduler 和 failover handler 加入。在测试完备后可以作为默认的策略。对于 Shuffle Service,目前也已经有一个在讨论中的方案了:见文末链接[4]

就个人的感受而言,最近 Flink 社区正在发生两件重要的事情。一是上文说的 Blink 开源,另一件就是社区对中文用户的日益重视。

Apache Flink 社区最近为中文用户建立了官方的中文邮件列表,提供了一个官方的渠道给中文用户做问题交流。起因是社区在最近的统计中发现,过去三个月内访问 flink.apache.org 官方网站的用户中有 30% 来自中国。

感兴趣的用户可以通过下面的流程来订阅:

1、发送任意邮件到 user-zh-subscribe@flink.apache.org
2、收到官方确认邮件
3、回复该邮件 confirm 即可订阅

订阅成功后将收到 Flink 官方的中文邮件列表的消息,就可以用中文在上面问问题和帮助别人解答问题了。

这件事对笔者触动比较大,因为 Apache 以往一向推崇使用英文交流,肯为中文用户单独开设中文邮件列表的顶级项目实为罕见,据我所知 Flink 是第一个。相信这个举动也是社区做的一次较大的创新和尝试,同时这也从侧面反映了来自中国的开源力量在世界的舞台上获得了越来越多的关注与尊重。同时也期待着可以有更多 Flink 中文社区志愿者参与到这个项目中来,共建社区生态,为中国的开源事业贡献一份力量。

中文文档支持计划

之前由中文社区的小伙伴们共同翻译的中文文档(托管在 https://flink-china.org/ ),现在计划将贡献给 Apache Flink,并已在邮件列表中发起讨论。讨论的内容包括如何在 Flink 主干分支中同时维护中英文文档,如何做中英文文档同步和翻译,中文文档的地址和链接等等。更详细的支持计划可以看下 链接[6]

文档是一个开源项目重要的组成部分,也是参与开源贡献、融入开源社区的一种方式。感兴趣的同学可以关注下这个邮件的动态,参与到后续的翻译贡献中去。

全面拥抱中文用户

从社区里发生的和正在发生的一些事情中可以看出,Apache Flink 社区正在拥抱中文用户,能将中文用户以如此高的优先级来支持的社区真不多。这对于国内用户来说无疑是一个积极的信号,同时这一系列举动也很可能会影响接下来几年国内大数据生态圈的变化。

参考资料

  1. [ANNOUNCE] Contributing Alibaba’s Blink
  2. [DISCUSS] A strategy for merging the Blink enhancements
  3. [DISCUSS] FLIP-32: Restructure flink-table for future contributions
  4. [DISCUSS] Proposal of external shuffle service
  5. [DISCUSS] Start a user-zh@flink.apache.org mailing list for the Chinese-speaking community?
  6. [DISCUSS] Contributing Chinese website and docs to Apache Flink