美国时间 1 月 10 日,Apache 软件基金会对外宣布,万众期待的Apache Beam在经历了近一年的孵化之后终于毕业。这一顶级Apache 开源项目终于成熟。
这是大数据处理领域的又一大里程碑事件仅仅在上个月,腾讯宣布将在 2017 年一季度开源其大数据计算平台Angel。现在看来,生不逢时的 Angel 可能迎来了它最大的对手。至此,谷歌终于也完成了对其云端大数据平台 Cloud Dataflow 开源的承诺。
Apache Beam 有两大特点:
统一了数据批处理(batch)和流处理(stream)编程范式,
能在任何执行引擎上运行。
它不仅为模型设计、更为执行一系列数据导向的工作流提供了统一的模型。这些工作流包括数据处理、吸收和整合。
它针对什么问题提供了解决方案:
大数据处理领域的一大问题是:开发者经常要用到很多不同的技术、框架、ApI、开发语言和 SDK。雷锋网(公众号:雷锋网)获知,取决于需要完成的是什么任务,以及在什么情况下进行,开发者很可能会用 MapReduce 进行批处理,用 Apache Spark SQL 进行交互请求( interactive queries),用 Apache Flink 实时流处理,还有可能用到基于云端的机器学习框架。
近两年开启的开源大潮,为大数据开发者提供了十分富余的工具。但这同时也增加了开发者选择合适的工具的难度,尤其对于新入行的开发者来说。这很可能拖慢、甚至阻碍开源工具的发展:把各种开源框架、工具、库、平台人工整合到一起所需工作之复杂,是大数据开发者常有的抱怨之一,也是他们支持专有大数据平台的首要原因。
谷歌开源 Cloud Dataflow 背后的算盘是:
Apache Beam 的用户基础越大,就会有更多人用谷歌云平台运它。相应地,他们会转化为谷歌云服务的客户。腾讯开放 Angel 的动机与之类似。
背景
2016 年 2 月份,谷歌及其合作伙伴向 Apache 捐赠了一大批代码,创立了孵化中的 Beam 项目( 最初叫 Apache Dataflow)。这些代码中的大部分来自于谷歌 Cloud Dataflow SDK开发者用来写流处理和批处理管道(pipelines)的库,可在任何支持的执行引擎上运行。当时,支持的主要引擎是谷歌 Cloud Dataflow,附带对 Apache Spark 和开发中的 Apache Flink 支持。如今,它正式开放之时,已经有五个官方支持的引擎。除去已经提到的三个,还包括 Beam 模型和 Apache Apex。
雷锋网获知,Apache Beam 的官方解释是:Beam 为创建复杂数据平行处理管道,提供了一个可移动(兼容性好)的 ApI 层。这层 ApI 的核心概念基于 Beam 模型(以前被称为 Dataflow 模型),并在每个 Beam 引擎上不同程度得执行。
谷歌工程师、Apache Beam 项目的核心人物 Tyler Akidau 表示:
当我们(谷歌和几家公司)决定把 Cloud Dataflow SDK 和相关引擎加入 Apache Beam 孵化器项目时,我们脑海里有一个目标:为世界提供一个易于使用、但是很强大的数据并行处理模型,支持流处理和批处理,兼容多个运行平台。
前景
对于 Apache Beam 的前景,Tyler Akidau 说道:
一般来讲,在孵化器毕业只是一个开源项目生命周期中的一个里程碑未来还有很多在等着我们。但成为顶级项目是一个信号:Apache Beam 的背后已经有为迎接它的黄金时间准备就绪的开发者社群。
这意味着,我们已经准备好向前推进流处理和批处理的技术边界,并把可移动性(兼容多平台)带到可编程数据处理。 这很像 SQL 在陈述性数据(declarative data)分析领域起到的作用。相比不开源、把相关技术禁锢在谷歌高墙之内,我们希望借此创造出前者所无法实现的东西。
另外,Tyler Akidau 信心十足地强调:流处理和批处理的未来在于 Apache Beam,而执行引擎的选择权在于用户。
最后,我们来看看谷歌在去年早些时候发布的 Apache Beam 技能矩阵,用它可以看出每一个兼容引擎执行 Beam 模型的效果。换句话说,它展示了 Apache Beam 管道在不同平台执行的兼容能力。
黄色表:都有什么被计算?蓝表:事件时间的那一刻?绿表:处理时间的哪一刻?红表:各项改进之间有什么关系?
viagoogleblog,GCp,datanami
济宁IT新闻