我正在查看Apache的文章,发现了一个新术语叫做Beam。有人能解释一下Apache Beam到底是什么吗?我尝试过谷歌搜索,但没有得到清晰的答案。
我阅读了Apache的帖子,发现了一个新术语叫做Beam。可以有人解释一下Apache Beam是什么吗?我尝试使用谷歌搜索,但没有找到明确的答案。我正在查看Apache的文章,发现了一个新术语叫做Beam。有人能解释一下Apache Beam到底是什么吗?我尝试过谷歌搜索,但没有得到清晰的答案。
我阅读了Apache的帖子,发现了一个新术语叫做Beam。可以有人解释一下Apache Beam是什么吗?我尝试使用谷歌搜索,但没有找到明确的答案。Apache Beam是一个开源的、统一的模型,用于定义和执行批处理和流处理数据并行处理管道,以及一组语言特定的SDK用于构建管道和运行时特定的Runners来执行它们。
历史:Beam模型的背后源自于谷歌内部的多个数据处理项目,包括MapReduce、FlumeJava和Millwheel。这个模型最初被称为“Dataflow Model”,并首次作为Google Cloud Dataflow实现--其中包括一个GitHub上的Java SDK用于编写管道以及在Google云平台上执行它们的完全托管服务。社区中的其他人开始编写扩展,包括Spark Runner、Flink Runner和Scala SDK。2016年1月,谷歌和一些合作伙伴将Dataflow编程模型和SDK部分作为Apache孵化器提案提交,名称为Apache Beam(统一的批处理+流处理)。Apache Beam在2016年12月从孵化中毕业。
学习Beam模型的其他资源:
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试图通过一种模型,使得描述通常在结合批处理和流处理时出现问题的乱序处理变得更加容易,正如那篇Programming Model Comparison所描述的那样。
尤其是,引用自对比文章,Dataflow模型被设计成以一种更加模块化、健壮和易于维护的方式优雅地解决以下四个关键问题,这是所有数据处理从业人员构建他们的流水线必须尝试回答的问题:
...计算哪些结果?求和、连接、直方图、机器学习模型?
在事件时间中的哪些位置计算结果?每个事件最初发生的时间是否影响结果?结果是否在固定窗口、会话或单个全局窗口中聚合?
在处理时间中何时实现结果?每个事件在系统内观察到的时间是否影响结果?何时发出结果?当数据进化时是否可以推测?当数据到达晚期且需要修订结果时?这两者的结合?
结果的精炼如何关联?如果有额外的数据到达并且结果发生变化,它们是独立和不同的吗?它们是否相互依存?
Beam中描述的数据处理流程可以在Spark、Flink、Google云端的Dataflow提供的平台上运行,还可以在其他包括"Direct"本地机器选项在内的"运行时"上运行。
该体系结构支持多种语言。Java SDK现已可用。Dataflow Python SDK即将发布,Scala等其他SDK也在规划中。
请查看Apache Beam的镜像源代码。