什么是Apache Beam?

Vis*_*swa 50 apache-beam

我正在浏览Apache帖子,发现了一个名为Beam的新术语.任何人都可以解释Apache Beam究竟是什么?我试图谷歌,但无法得到一个明确的答案.

Fra*_*ces 62

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

历史: Beam背后的模型是从许多内部Google数据处理项目演变而来的,包括MapReduce,FlumeJavaMillwheel.该模型最初被称为" 数据流模型 ",最初实现为Google云数据流 - 包括用于编写管道的GitHub上Java SDK和用于在Google Cloud Platform上执行它们的完全托管服务.社区中的其他人开始编写扩展,包括Spark Runner,Flink RunnerScala SDK.2016年1月,Google和许多合作伙伴以Apache Beam(统一批量+ strEAM处理)的名义提交了数据流编程模型和SDK部分作为Apache孵化器提案.Apache Beam 于2016年12月从孵化中毕业.

学习梁模型的其他资源:


nea*_*mcb 21

Apache Beam(Batch + strEAM)是用于执行批处理和流数据处理的模型和API集.它是由Google(Cloudera和PayPal)于2016年通过Apache孵化器项目开源的.

页面数据流/波束与火花:编程模型比较 - 云数据流将Beam API与Apache Spark进行了对比,后者在为Hadoop世界提供批量和流媒体的现代,灵活API和一套优化技术方面取得了巨大成功.超越.

Beam试图通过一个模型更进一步,这使得很容易描述无序处理的各个方面,这在组合批处理和流处理时经常是一个问题,如编程模型比较中所述.

特别是,从比较中引用,数据流模型旨在优雅地以更加模块化,健壮且易于维护的方式进行处理:

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

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

Beam中描述的流水线可以依次运行在Spark,Flink,Google云端的Dataflow产品和其他"运行时",包括"直接"本地机器选项.

该体系结构支持各种语言.Java SDK现已上市.Dataflow Python SDK即将发布,其他人也可以设想Scala等.

请参阅Apache Beam镜像的来源