Beam技术

一、简介

在大数据处理中,流计算技术包括Storm、Spark Streaming和Flink,实际应用中还包括Storm Trident、Samura以及Google MillWhell和亚马逊的Kinesis等技术。离线处理基本上都基于Hadoop和Hive,那么实时流计算技术能否像离线数据处理一样出现Hadoop和Hive这种事实上的技术标准呢?Google给出的答案是:Beam。

Apache Beam被认为是继MapReduce、GFS、Bigtable等之后,Google在大数据处理领域对开源社区的又一大贡献,现已成为Apache顶级项目。当然,Beam也代表了Google对数据处理领域一统江湖的雄心。

官网是这样介绍的,Apache Beam是一个先进的统一处理模型(An advanced unified programming model),运行在任何实现了批和流数据处理任务的执行引擎上(Implement batch and streaming data processing jobs that run on any execution engine)。它是一个开源的、统一的模型,用于定义批处理和流处理数据并行处理的管道,使用一个开源的Beam SDK你可以构建一个定义管道的程序,然后,这个管道由Beam支持的分布式后端去执行,其中包括Apache Apex、Apache Flink、Apache Spark和Google Cloud Dataflow。目前Beam可以支持语言有Java、Python、Go。最新版是2018年10月29号发布的2.8.0版本。

Beam技术的本身就在于大数据处理的编程范式和接口定义,而不在于具体的引擎实现Beam的设计目标就是统一离线批处理和实时流处理的编程范式。它的设计者将数据处理的问题统一抽象为Beam Model,数据处理人员只要将业务需求根据Beam Model的四个维度(即What are you computing、Where in event time、Where in processing time、How do refinements of results relate)开发并调用具体的Beam API,然后选用某种地城的执行引擎,就能实现一套代码,run anywhere的目标(底层引擎必须支持Beam)。

 

二、Beam技术

首先需要了解一下Cloud Dataflow,它是一种原生的谷歌云数据处理服务,是一种构建、管理和优化复杂数据流水线的方法,用于构建移动应用、调试、追踪和监控产品级云应用。它采用了谷歌内部技术Flume和MillWheel,其中Flume用于数据的高效并行化处理,MillWheel则用于互联网级别的处理任务。它提供的数据流管理服务可控数据处理作业的执行,数据处理作业可使用Google Cloud Dataflow SDK创建。

Apache Beam本身不是一个流处理平台,而是一个统一的编程框架,它提供了开源的统一的编程模型,帮助用户床架自己的数据处理流水线,从而可以在任意执行引擎之上运行批处理和流处理任务。Beam对流计算场景中的问题进行了抽象和总结,提炼为Beam Model,而用户只需要结合业务需求,根据Beam Model的四个维度调用具体的API,即可生成分布式数据处理Pipeline,并提交到具体执行引擎上执行,最终这些Beam程序可以运行在任何一个计算平台上,只要相应的平台实现了对Beam的支持。Beam拥有以下三个特点:

  • 统一的(Unified):对批处理和流处理用例使用单一的编程模型;
  • 可移植的(Portable):可以在空中环境中执行Pipelines;
  • 可扩展的(Extensible):编写和共享新的SDK、IO连接和转换库。

 

 

发布了40 篇原创文章 · 获赞 97 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/github_39577257/article/details/83582364