Apache Beam到底有多炫

你知道被认为继MapReduce、GFS、BigQuery等之后,Google在大数据处理领域对开源社区的又一大贡献是哪个项目吗?答案是ApacheBeam。事实上,“Beam”这个项目名称已经很清楚地表明了它的设计初衷——统一批处理(Batch)模式和数据流(Stream)处理模式的标准。今天,请跟随大圣众包威客平台()的脚步,一起了解ApacheBeam到底有多炫!

原名GoogleDataFlow的ApacheBeam,是Google在2016年2月贡献给Apache基金会的Apache孵化项目。基于一种统一的模式的ApacheBeam,是用于定义和执行数据并行处理管道(pipeline)的,这些管理随带一套针对特定语言的SDK用于构建管道,以及针对特定运行时环境的Runner用于执行管道。

ApacheBeam项目的重点,在于数据处理的编程范式和接口定义,事实上,它并不涉及具体的执行引擎的实现,而且,能够基于Beam开发的数据处理程序可以执行在任意的分布式计算引擎上,也是它的目标。综上,统一批处理和流处理的编程范式是ApacheBeam的主要目标,因为这样能够为无限、乱序、web-scale的数据集处理提供简单灵活、功能丰富以及表达能力十分强大的SDK。

二、BeamModel4招教会用户进行数据处理

ApacheBeam,能够在Java中提供统一的数据进程管道开发,而且能够很好地支持Spark和Flink。由于ApacheBeam提供了很多在线框架,所以开发者也就无需学习太多框架。同时,它也提供了一个模板更方便用户去进行数据处理——BeamModel。我们都知道,无限的时间乱序数据流,是BeamModel处理的目标数据,不考虑时间顺序或是有限的数据集可看作是无限乱序数据流的一个特例。而用户只需要在Model的每一步中根据业务需求,按照以下几个维度调用具体的API,即可生成分布式数据处理Pipeline,并提交到具体执行引擎上执行。这几个维度抽象出来,便是BeamSDK。

那么,到底用户在进行数据处理时,需考虑哪几个维度的问题呢?

1.是什么——如何对数据进行计算

例如,Sum、Join或是机器学习中的训练学习模型等。在BeamSDK中由Pipeline中的操作符指定。

2.在哪里——数据在什么范围中计算

3.什么时候——何时将计算结果输出

例如,在1小时的Event-Time时间窗口中,每隔1分钟,将当前窗口计算结果输出。在BeamSDK中由Pipeline中的Watermark和触发器指定。

4.怎样处理——迟到数据如何处理

例如,将迟到数据计算增量结果输出,或是将迟到数据计算结果和窗口内数据计算结果合并成全量结果输出。在BeamSDK中由Accumulation指定。

将上文提及的4个维度抽象出来,便是BeamSDK。值得一提的是,这几个维度的抽象仅仅关注业务逻辑本身,和分布式任务如何执行没有任何关系。那么,关于ApacheBeamSDK有哪4个主要概念呢?更多大数据与商业智能领域干货、兼职机会及行业资源分享等,请关注“大圣众包”微博,或添加大圣妹个人微信号“dashengmeme”。

这有点类似于SparkContext。你所有的操作将开始于调度对象,你会用它来从输入源建立数据流,应用转换,并将结果写入输出下沉。

类似于原始的Spark的弹性分布式数据集(RDD),PCollections包含一个潜在的无限数据流。这些信息都来源于输入源,然后应用转换。

一个操作PCollection处理步骤执行数据操作。典型的传递途径可能会在一个输入源有多个转换操作(例如,将一组日志条目传入的字符串转换成一个键/值对,关键是IP地址和值是日志消息)。它由BeamSDK附带的一系列标准聚合建成,当然,也可以定义根据自己的处理需求自定义。

源和汇为你的数据提供输入和输出端点。

(更多大数据与商业智能领域干货、或电子书,可添加个人微信号(dashenghuaer))

点击上方蓝色字体关注。

您还可以搜索公众号“D1net”选择关注D1net旗下的各领域(云计算,数据中心,大数据,CIO,企业协作,网络数通,信息安全,企业移动应用,系统集成,服务器,存储,呼叫中心,视频会议,视频监控等)的子公众号。

美国时间1月10日,Apache软件基金会对外宣布,万众期待的 Apache Beam 在经历了近一年的孵化之后终于毕业。这一顶级 Apache开源项目终于成熟。

这是大数据处理领域的又一大里程碑事件——仅仅在上个月,腾讯宣布将在2017年一季度开源其大数据计算平台 Angel 。现在看来,生不逢时的Angel可能迎来了它最大的对手。至此,谷歌终于也完成了对其云端大数据平台Cloud Dataflow开源的承诺。

1、统一了数据批处理(batch)和流处理(stream)编程范式,

2、能在任何执行引擎上运行。

它不仅为模型设计、更为执行一系列数据导向的工作流提供了统一的模型。这些工作流包括数据处理、吸收和整合。

它针对什么问题提供了解决方案:

大数据处理领域的一大问题是:开发者经常要用到很多不同的技术、框架、API、开发语言和SDK。雷锋网获知,取决于需要完成的是什么任务,以及在什么情况下进行,开发者很可能会用MapReduce进行批处理,用Apache Spark SQL进行交互请求(interactive queries),用Apache Flink实时流处理,还有可能用到基于云端的机器学习框架。

近两年开启的开源大潮,为大数据开发者提供了十分富余的工具。但这同时也增加了开发者选择合适的工具的难度,尤其对于新入行的开发者来说。这很可能拖慢、甚至阻碍开源工具的发展:把各种开源框架、工具、库、平台人工整合到一起所需工作之复杂,是大数据开发者常有的抱怨之一,也是他们支持专有大数据平台的首要原因。

Apache Beam的用户基础越大,就会有更多人用谷歌云平台运它。相应地,他们会转化为谷歌云服务的客户。腾讯开放Angel的动机与之类似。

2016年2月份,谷歌及其合作伙伴向Apache捐赠了一大批代码,创立了孵化中的Beam项目(最初叫Apache Dataflow)。这些代码中的大部分来自于谷歌Cloud Dataflow SDK——开发者用来写流处理和批处理管道(pipelines)的库,可在任何支持的执行引擎上运行。当时,支持的主要引擎是谷歌Cloud Dataflow,附带对Apache Spark和开发中的Apache Flink支持。如今,它正式开放之时,已经有五个官方支持的引擎。除去已经提到的三个,还包括Beam模型和Apache Apex。

Apache Beam的官方解释是:“Beam为创建复杂数据平行处理管道,提供了一个可移动(兼容性好)的API层。这层API的核心概念基于Beam模型(以前被称为Dataflow模型),并在每个Beam引擎上不同程度得执行。”

“当我们(谷歌和几家公司)决定把 Cloud Dataflow SDK和相关引擎加入 Apache Beam孵化器项目时,我们脑海里有一个目标:为世界提供一个易于使用、但是很强大的数据并行处理模型,支持流处理和批处理,兼容多个运行平台。”


“一般来讲,在孵化器毕业只是一个开源项目生命周期中的一个里程碑——未来还有很多在等着我们。但成为顶级项目是一个信号:Apache Beam的背后已经有为迎接它的黄金时间准备就绪的开发者社群。

这意味着,我们已经准备好向前推进流处理和批处理的技术边界,并把可移动性(兼容多平台)带到可编程数据处理。这很像SQL在陈述性数据(declarative data)分析领域起到的作用。相比不开源、把相关技术禁锢在谷歌高墙之内,我们希望借此创造出前者所无法实现的东西。”

另外,Tyler Akidau信心十足地强调:“流处理和批处理的未来在于Apache Beam,而执行引擎的选择权在于用户。”

最后,我们来看看谷歌在去年早些时候发布的“Apache Beam技能矩阵”,用它可以看出每一个兼容引擎执行Beam模型的效果。换句话说,它展示了Apache Beam管道在不同平台执行的兼容能力。

(黄色表:都有什么被计算?蓝表:事件时间的那一刻?绿表:处理时间的哪一刻?红表:各项改进之间有什么关系?)

如果您在企业IT、网络、通信行业的某一领域工作,并希望分享观点,欢迎给企业网D1Net投稿,投稿邮箱:

(下载iPhone或Android应用“经理人分享”,一个只为职业精英人群提供优质知识服务的分享平台。不做单纯的资讯推送,致力于成为你的私人智库。)

我要回帖

更多关于 炫诗 的文章

 

随机推荐