【IT168 评论】美国时间1月10日,Apache软件基金会对外宣布,Apache Beam经历了近一年的孵化之后终于正式开源,据说这是足以和Spark平起平坐的下一代大数据处理平台,听说这个消息之后,我首先想到的就是腾讯的Angel,上个月腾讯宣布将在2017年第一季度开源Angel,看来,生不逢时的Angel似乎一出生就会遇到一个强劲的对手。至此,谷歌也完成了对其云端大数据平台Cloud Dataflow开源的承诺。
Apache Beam是用于批处理和流式数据处理的统一编程模型,已从Apache孵化器毕业,晋升为优异Apache项目。使用Apache Beam的用户越多,就会有更多的人用谷歌云平台运行它,久而久之,他们会转化为谷歌云服务的客户,腾讯开放Angel的动机与其类似。
除了成为不断扩展的Apache大数据处理软件中的一员,Beam作为专有大数据平台的易用性是众多用户选择它的重要原因。对开发人员来说,把各种开源框架、工具、库、平台等都通过人工的方式整合在一起是极其复杂的。巧合的是,腾讯的Angel也号称更易用,具有更高性能,并整合了Spark和Petuum的优点,这样看来,这场纷争将会十分精彩。
Beam提供了一个用于创建批处理和流处理作业的单一编程模型(该名称是“批处理”和“流”的混合),并且它提供了一个抽象层,用于分发到运行作业的各种引擎。该项目始于Google,目前Beam使用与GCD(Google云端数据流)相同的API,支持的主要引擎是谷歌Cloud Dataflow,附带对Apache Spark和开发中的Apache Flink支持。如今,它正式开放,已经有五个官方支持的引擎。除去已经提到的三个,还包括Beam模型和Apache Apex。
Apache Beam模型总共包括五大组件:用于定义和执行数据并行处理的管道(数据通过程序的途径);类似于原始Spark的弹性分布式数据集(RDD)PCollections或数据流本身;变换,用于处理数据;源和汇为数据提供输入和输出端点;针对特定运行时环境的Runner用于执行管道。
Apache认为这样的组成有利于Beam可以应付从简单的基于批处理的数据采集到复杂的基于事件时间的流处理,轻松直观地表达数据处理的流水线。理论上,对于潜在的开发人员来说是一个稀有概念,但与其假定Beam将来可以替代Spark或其他框架,还不如认为是用来扩充其他框架的。
Beam可能的缺陷是虽然产品中的抽象层使操作更容易,但是开发人员与底层的距离被拉开了。比如,Beam与Apache Spark的集成:Spark运行程序还没有使用最新的DataFrames系统,因此可能无法利用它提供的优化。但这不是一个概念上的缺陷,而是实施问题,是可以及时解决的。
Ian Pointer在2016年初对Beam的讨论中指出,Beam最大的好处就是使处理系统之间的迁移不那么令人头痛。同时,将用户的处理逻辑与底层引擎的细节相分开。如果大数据处理引擎之间的竞争继续,Apache Spark将会是最有力的竞争者,将会为开发者和数据管理员提供更广泛的选择。