56

我在浏览 Apache 的帖子时发现了一个名为 Beam 的新术语。谁能解释一下 Apache Beam 到底是什么?我试图用谷歌搜索,但无法得到明确的答案。

4

2 回答 2

69

Apache Beam是一个开源的统一模型,用于定义和执行批处理和流式数据并行处理管道,以及一组用于构建管道的特定于语言的 SDK 和用于执行它们的特定于运行时的 Runners。

历史: Beam 背后的模型是从 Google 的许多内部数据处理项目演变而来的,包括MapReduceFlumeJavaMillwheel。该模型最初被称为“<a href="http://www.vldb.org/pvldb/vol8/p1792-Akidau.pdf" rel="noreferrer">Dataflow Model”,并首先作为Google Cloud Dataflow实现- - 包括GitHub 上用于编写管道的 Java SDK 和用于在 Google Cloud Platform 上执行它们的完全托管服务。社区中的其他人开始编写扩展,包括Spark RunnerFlink RunnerScala SDK. 2016 年 1 月,Google 和许多合作伙伴提交了数据流编程模型和 SDK 部分作为 Apache 孵化器提案,名称为 Apache Beam(统一 Batch + strEAM 处理)。Apache Beam于 2016 年 12 月从孵化中毕业。

学习 Beam 模型的其他资源:

于 2016-02-11T05:59:00.180 回答
26

Apache Beam (Batch + strEAM) 是一个模型和一组 API,用于进行批处理和流式数据处理。它于 2016 年由谷歌(与 Cloudera 和 PayPal)通过 Apache 孵化器项目开源。

页面Dataflow/Beam & Spark: A Programming Model Comparison - Cloud Dataflow将 Beam API 与Apache Spark进行了对比,后者在为 Hadoop 世界带来现代、灵活的 API 和一套用于批处理和流式处理的优化技术方面取得了巨大成功,超过。

Beam 试图通过一个模型更进一步,该模型可以轻松描述乱序处理的各个方面,这在结合批处理和流处理时通常是一个问题,如编程模型比较中所述。

特别是,引用比较,Dataflow 模型旨在以更模块化、更健壮且更易于维护的方式优雅地解决:

...所有数据处理从业者在构建管道时必须尝试回答的四个关键问题:

  • 计算什么结果?求和、连接、直方图、机器学习模型?
  • 事件时间在哪里计算结果?每个事件最初发生的时间是否会影响结果?结果是聚合在固定窗口、会话还是单个全局窗口中?
  • 在处理时间内,结果何时实现?在系统内观察每个事件的时间是否会影响结果?什么时候发出结果?推测,随着数据的发展?当数据迟到并且必须修改结果时?这些的一些组合?
  • 结果的细化如何关联?如果额外的数据到达并且结果发生变化,它们是否独立且不同,它们是否相互建立,等等?

Beam 中描述的管道又可以在 Spark、Flink、Google 的云端数据流产品和其他“运行时”上运行,包括“直接”本地机器选项。

该架构支持多种语言。Java SDK 现在可用。一个 Dataflow Python SDK 即将发布,其他的预计将用于 Scala 等。

请参阅Apache Beam 镜像中的源代码

于 2016-03-28T16:19:02.373 回答