首页 > 其他分享 >Apache Beam基本架构

Apache Beam基本架构

时间:2022-11-07 21:32:12浏览次数:58  
标签:Pipeline 架构 Runner Beam 引擎 计算 Apache

Apache Beam主要由Beam SDK和Beam Runner两部分组成。Beam SDK定义了开发分布式数据处理程序业务逻辑的API,它描述的分布式数据处理任务Pipeline则交给具体的Beam Runner(执行引擎)进行计算。

Apache Beam基本架构_Apache Beam

1、Beam SDK

Beam SDK是一套大数据处理统一编程接口,它通过对“有限数据流”和“无限数据流”进行了统一抽象,规范了批处理和流式处理两种大数据计算范式。Beam SDK提供了以下4种计算抽象帮助用户构建数据管道。

1)Pipeline。Pipeline封装了整个数据处理逻辑的计算过程,包括数据输入、处理以及输出三部分。每个Beam应用程序必须创建一个Pipeline,并定义其运行相关的配置选项(比如采用的计算引擎以及计算引擎相关的参数等)以便告诉Pipeline如何运行。

2)PCollection。PCollection是分布式数据集的抽象。在Beam中,数据集可以是有限的(bounded),即来自固定数据源,比如HDFS上的文件;也可以是无限的(unbounded),即来自不断更新的数据源,比如Kafka消息队列。Pipeline通常通过读取外部数据源构建一个初始的PCollection。Pipeline中每个阶段的输入和输出均为PCollection。

3)Transform。Transform是Pipline中的一个数据处理操作或步骤。每个Transform以一个或多个PCollection对象作为输入,依次遍历其中的每个元素并作用在用户定义的函数上,最终产生一个或多个PCollection对象。

4)IO Source与Sink。Source和Sink是对数据读取和结果存储逻辑的抽象。Source封装了从外部数据源(比如HDFS或Kafka)读取数据到Pipeline相关的代码逻辑;Sink封装了将PCollection写入外部存储系统相关的代码逻辑。

一个基本的Beam Pipeline工作流如图所示:

Apache Beam基本架构_Apache Beam_02

总体上讲,这些计算引擎在数据格式化、数据序列化及数据转换方面拥有不同的抽象,而Beam作为构建在计算引擎之上的高级抽象,充分借鉴了各个计算引擎的优势,尽可能做到更强的通用性。

2、Beam Runner

利用Beam SDK编写的计算逻辑代码是独立于具体分布式计算引擎的,用户可根据自己的需要将其运行在指定的计算引擎上。Apache Beam支持的底层执行引擎包括Apache Flink、Apache Spark、Apache Apex以及Google Cloud Platform等。Runner是Apache Beam对后端计算引擎的抽象,目前提供了Direct、Flink、Spark、Apex以及Cloud Datafl ow等计算引擎的Runner实现。

  • Direct Runner:Apache Beam自带的简易Runner实现,可将用户逻辑代码运行在本地,通常用于本地调试和测试。
  • Flink Runner:Apache Flink是一个开源的流式计算引擎,它将批处理转化成流处理问题,进而统一了批处理与流处理两种计算场景。
  • Spark Runner:Apache Spark是一个开源的DAG计算引擎,它将流处理问题转化为批处理问题,进而统一了批处理与流处理两种计算场景。
  • Apex Runner:Apache Apex是一个构建在YARN之上的批处理与流处理统一计算引擎,其设计思想与Apache Flink类似。

随着新型计算引擎的不断涌现,Beam Runner的优势变得愈发明显。它通过一个适配层将任意计算引擎接入Beam SDK,进而使得应用层逻辑代码无需任何修改便可运行在其他计算引擎上。

标签:Pipeline,架构,Runner,Beam,引擎,计算,Apache
From: https://blog.51cto.com/key3feng/5831414

相关文章