Beam 最近成功地晋升为 Apache 软件基金会的顶级项目,Beam 的目标包括使用灵活的高层及数据流处理不限时间、无序、全球规模的数据。Beam 最初是由 Google 内部项目创建,随后被捐献给了 Apache ,并于 2016 年 2 月开始一直孵化到当年年底。Beam 项目寻求针对流式和批处理任务创建一个统一编程模型,并且产生可以被许多已经支持的数据处理引擎消费的组件。Beam 寻求:
为世界提供一个易用的、强大的数据并行处理模型,支持包括流式和批处理,灵活地在各种实时平台之间工作。Beam SDKs 使用相同的类展现有限和无限数据,并且基于这些数据至上做相同的转换操作。
Java 和 Python 的 SDK 支持提供了选择的后台处理引擎和处理管道组件之间的抽象层。支持的处理引擎包括 Apache Apex 、 Flink 、 Spark 以及 Google Cloud Dataflow 引擎。
Beam 管道的编程模型包括 PCollection(s)、Transform(s) 和 Pipeline I/O,以及每个支持处理引擎的 Runners,对于本地 DirectRunner 不作为默认的 Beam:
- Pipeline
- PCollection
- Core SDK transform objects ParDo 、 GroupByKey 、 Combine 、 Flatten 、 Partition
- Source / Sink Pipeline I/O
- DirectRunner 、 DataflowRunner 、 SparkRunner 、 FlinkRunner 以及 ApexRunner
Google 开源 Beam 的动机是作为新兴商业业务的一部分,用以支持集成,同时贡献给其他开源项目。基本想法是这样做可以增加Beam 的潜在使用几率,深层次是想要提升Google Dataflow平台的曝光度,深层次原因是因为Beamd 的出现会提升已经支持的处理引擎。Google 在Spark 和Beam 之间进行了比较,注明Beam 模型由于它专注于流式和批量数据处理,所以Beam 是正确的模型选择,并且通过启用事件时间窗口(Event-Time Windowing)、水印(Watermark)、触发(Trigger)特性等证明了语义重要性。开源社区和数据科学产业还不能独立于Google 进行数据验证,并且应该围绕系统架构和基准使用更多的用例分析。早期迹象显示Beam 社区正在不断发展,并且围绕支持多个处理平台也有积极的反馈。
查看英文原文: Beam Graduates to Top-Level Apache Project
感谢刘志勇对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论