我在浏览 Apache 的帖子时发现了一个名为 Beam 的新术语。谁能解释一下 Apache Beam 到底是什么?我试图用谷歌搜索,但无法得到明确的答案。
2 回答
Apache Beam是一个开源的统一模型,用于定义和执行批处理和流式数据并行处理管道,以及一组用于构建管道的特定于语言的 SDK 和用于执行它们的特定于运行时的 Runners。
历史: Beam 背后的模型是从 Google 的许多内部数据处理项目演变而来的,包括MapReduce、FlumeJava和Millwheel。该模型最初被称为“<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 Runner、Flink Runner和Scala SDK. 2016 年 1 月,Google 和许多合作伙伴提交了数据流编程模型和 SDK 部分作为 Apache 孵化器提案,名称为 Apache Beam(统一 Batch + strEAM 处理)。Apache Beam于 2016 年 12 月从孵化中毕业。
学习 Beam 模型的其他资源:
- Apache Beam网站
- VLDB 2015 论文(使用原始命名数据流模型)
- O'Reilly 的 Radar 网站上的Streaming 101和Streaming 102帖子
- 软件工程电台上的 Beam播客
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 等。