前言Apache Beam是一个开源的数据处理编程库,由google贡献给Apache的项目,前不久刚刚成为Apache TLP项目 。它提供了一个高级的、统一的编程模型,允许我们通过构建Pipeline的方式实现批量、流数据处理,并且构建好的Pipeline能够运行在底层不同的执行引擎上 。刚刚接触该开源项目时,我的第一感觉就是:在编程API的设计上,数据集及其操作的抽象有点类似Apache Crunch(MapReduce Pipeline编程库)项目;而在支持统一数据处理模型上,能够让人想到Apache Flink项目 。如果深入了解Apache Beam,你会发现未来Apache Beam很可能成为数据处理领域唯一一个能够将不同的数据应用统一起来的编程库 。(原创:时延军(包含链接:http://shiyanjun.cn)
Apache Beam架构概览
Apache Beam目前最新版本为0.5.0-SNAPSHOT,最新的Release版本为0.4.0,很多特性还在开发中 。在网上找到一个由Andrew Psaltis在2016年6月份演讲的《Apache Beam: The Case for Unifying Streaming API’s》,引用了其中一个Apache Beam的架构图,如下图所示:
文章插图
上图中,我们可以看到,Apache Beam核心的主要有两层:
- Pipeline构建层
- Runner适配层
我们先根据官网文档,了解一下Apache Beam的Roadmap 。首先,下面的三个特性,或者说是Apache Beam的目标:
- 统一(UNIFIED)
- 可移植(PORTABLE)
- 可扩展(EXTENSIBLE)
基本概念
在使用Apache Beam构建数据处理程序,首先需要使用Beam SDK中的类创建一个Driver程序,在Driver程序中创建一个满足我们数据处理需求的Pipeline,Pipeline中包括输入(Inputs)、转换(Transformations)、输出(Outputs)三个核心的组件 。然后,根据我们选择的Beam SDK来确定底层使用Pipeline Runner(执行引擎,或计算引擎),将我们定义好的Pipeline运行在Pipeline Runner上 。Apache Beam SDKs提供一组抽象,用来简化大规模分布式数据处理 。同一个Beam抽象,能够同时适应批量处理、流处理两种数据源 。下面,我们了解一下Apache Beam的一些关键抽象:
- Pipeline
- PCollection
- Transform
推荐阅读
- 架构的腐化是必然的
- 浅谈数据库分布式架构设计
- 离婚后户口迁回娘家可以独立一户吗?
- 产后骶髂关节炎
- 淘宝开店不经营会有什么后果 开了淘宝店怎么运营起来
- 怎么才能成为淘宝商家 淘宝开店之后怎么操作
- 达成一次性赔偿协议后,能否再次起诉要求赔偿?
- 开机后不能直达想看的节目,如何为老年人选择一台操作便利的电视
- 风衣后面的腰带怎么系?
- 运动后血尿什么原因