什么是Apache Beam?

时间:2016-02-08 07:34:58

标签: apache-beam

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

2 个答案:

答案 0 :(得分:60)

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

历史记录: Beam背后的模型源于许多内部Google数据处理项目,包括MapReduceFlumeJavaMillwheel。此模型最初称为“Dataflow Model”,最初实现为Google Cloud Dataflow - 包括用于编写管道的Java SDK on GitHub和用于在Google Cloud Platform上执行它们的完全托管服务。社区中的其他人开始编写扩展程序,包括Spark RunnerFlink RunnerScala SDK。 2016年1月,Google和许多合作伙伴以Apache Beam(统一批量+ strEAM处理)的名义提交了数据流编程模型和SDK部分作为Apache孵化器Proposal。 Apache Beam graduated于2016年12月孵化。

学习梁模型的其他资源:

答案 1 :(得分:21)

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

页面Dataflow/Beam & Spark: A Programming Model Comparison - Cloud Dataflow将Beam API与Apache Spark进行了对比,后者在为Hadoop世界及其他地方提供批量和流媒体的现代,灵活的API和优化技术方面取得了巨大成功。

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

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

  

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

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

Beam中描述的管道可以依次在Spark,Flink,Google的云端数据流产品和其他运行时间上运行,包括" Direct"本地机器选项。

架构支持多种语言。 Java SDK现已上市。 Dataflow Python SDK即将发布,其他人也可以设想Scala等。

请参阅Mirror of Apache Beam

上的来源