Apache Beam
Apache Beam是一个统一的模型,用于定义批处理和流式数据并行处理管道,以及一组特定语言的SDK用于构建管道和用于在分布式处理后端执行这些管道的Runner,包括Apache Flink、Apache Spark、Google Cloud Dataflow和Hazelcast Jet。
状态
概述
Beam提供了一种通用方法来表达高度并行数据处理管道,并支持三类用户,每类用户都有相对不同的背景和需求。
- 最终用户:使用现有SDK编写管道,在现有runner上运行。这些用户希望专注于编写应用逻辑,其他一切都能正常工作。
- SDK开发者:针对特定用户群体(Java、Python、Scala、Go、R、图形界面等)开发Beam SDK。这些用户是语言专家,希望能够避开各种runner及其实现的所有细节。
- Runner开发者:拥有分布式处理的执行环境,希望支持针对Beam模型编写的程序。希望能够避开多个SDK的细节。
Beam模型
Beam背后的模型源自几个Google内部数据处理项目,包括MapReduce、FlumeJava和Millwheel。这个模型最初被称为"数据流模型"。 要了解更多关于Beam模型的信息(尽管仍在原始名称Dataflow下),请参阅O'Reilly's Radar网站上的《批处理之外的世界:流处理101》和《流处理102》文章,以及VLDB 2015论文。
Beam编程模型的关键概念包括:
PCollection
:表示数据集合,可以是有界或无界大小。PTransform
:表示将输入PCollection转换为输出PCollection的计算。Pipeline
:管理由PTransform和PCollection组成的有向无环图,可供执行。PipelineRunner
:指定管道应在何处以及如何执行。
SDK
Beam支持多种语言特定的SDK,用于针对Beam模型编写管道。
目前,该仓库包含Java、Python和Go的SDK。
对新的SDK或DSL有想法?请查看sdk-ideas标签。
运行器
Beam通过PipelineRunners支持在多个分布式处理后端上执行程序。目前,可用的PipelineRunners包括:
DirectRunner
在本地机器上运行管道。DataflowRunner
将管道提交到Google Cloud Dataflow。FlinkRunner
在Apache Flink集群上运行管道。该代码已从dataArtisans/flink-dataflow捐赠,现在是Beam的一部分。SparkRunner
在Apache Spark集群上运行管道。JetRunner
在Hazelcast Jet集群上运行管道。该代码已从hazelcast/hazelcast-jet捐赠,现在是Beam的一部分。Twister2Runner
在Twister2集群上运行管道。该代码已从DSC-SPIDAL/twister2捐赠,现在是Beam的一部分。
对新的运行器有想法?请查看runner-ideas标签。
构建和测试Beam本身的说明在贡献指南中。
📚 了解更多
以下是Beam社区积极维护的一些资源,可帮助您入门:
资源 | 详情 |
---|---|
Apache Beam网站 | 我们讨论项目及其细节的网站。 |
Java快速入门 | Java SDK入门指南。 |
Python快速入门 | Python SDK入门指南。 |
Go快速入门 | Go SDK入门指南。 |
Beam之旅 | 全面、互动的学习体验,深入介绍Beam概念。 |
Beam Quest | 由Google Cloud授予的认证,证明在Beam方面的熟练程度。 |
社区指标 | Beam的Git社区指标。 |
联系我们
要参与Apache Beam:
- 订阅或发送电子邮件至 user@beam.apache.org 邮件列表。
- 订阅或发送电子邮件至 dev@beam.apache.org 邮件列表。
- 加入 ASF Slack 的 #beam 频道
- 报告问题。