Apache Beam—透视Google统一流式计算的野心
Google是最早实践大数据的公司,目前大数据繁荣的生态很大一部分都要归功于Google最早的几篇论文,这几篇论文早就了以Hadoop为开端的整个开源大数据生态,但是很可惜的是Google内部的这些系统是无法开源的,在开源生态和云计算兴起之后,Google也是受够了闭源的痛苦,据说为了给用户提供HBase服务,Google还为BigTable写了兼容HBase的API,在Google看来这就是一种羞辱,痛定思痛,Google开始走开源之路,将自己的标准推广给社区,这就是Apache Beam项目诞生的整个大背景。整个Beam项目的演进历史为:

撇开这些八卦,Beam的整个设计理念和架构还是不错的,Beam是一个SDK,也是一个构架于各个底层平台Runner之上的Adapter,Beam对流式计算场景中的所有问题重新做了一次归纳,然后针对这些问题提出了几种不同的解决model,然后再把这些model通过一种统一的语言给实现出来,最终这些Beam程序可以run在任何一个计算平台上(只要平台/Runner实现了对Beam的支持)。通过一个Beam的参与方视图也能看出一个大概的架构:

在图中,终端用户用Beam来实现自己流式计算功能,使用的终端语言可能是Python、Java等,每个语言有一个对应的SDK,用户写出的程序会跑在各个平台/Runner上,每个Runner上都实现了从Beam Pipeline到平台功能的映射。
在任何一个设计开始之前,都先要确定问题,Beam也不例外,在设计者看来在流式计算场景中数据有三个特点,一:数据是非常大的,而且一直在不停产生,理论上是无穷大;二:这些数据的延迟是不可预期的也是不可控的,而且这些乱序是一种天然的行为,无法避免;三:这些数据的用途有可能是记录抽取转换、有可能是用来根据时间窗口做聚合,而且聚合可能是基于当前处理时间processing time,也有可能是根据事件发生时间event time来聚合。Processing time和event time之间是有lag/skew的,如图:

其中虚线是最理想的,表示处理时间和事件时间是相同的,红线是实际上的线,也叫水印线watermark,watermark一般是通过启发式算法算出来的。
接下来从high level的问题中抽象出四个具体的问题:
A:What are you computing,处理的数据是哪种类型,数据转换、聚合或者是两者都有,如图:

B:Where in event time,何时发生,其实是用哪种窗口来框住数据并处理,有固定窗口、滑动窗口、会话这三种模式:

C:When in processing time,何时被处理,如上Watermark图,在这里引入了一个Trigger机制,Trigger决定何时将计算结果发射出去,发射太早会丢失一部分数据,丧失精确性,发射太晚会导致延迟变长,而且会囤积大量数据,何时Trigger是由Watermark来决定的


D:How do refinements relate,如何优化

通过这种model能够保证准确性;功能也比较强大,还能识别出用户的burst行为;各种策略之间的可组合性也非常好,如:

由于策略很多,所以灵活性也很好,如:

模块化和抽象也做的很好,如:

总结:Beam虽然还在孵化之中,但是以Google对大数据的理解,绝对是一个强力的推手,而且Beam对自己的定位是粘合剂,不是一个挑战者,所以该项目看起来还是比较乐观。不过Beam背后隐藏的Google的野心也是非常大的,Beam看起来像个粘合剂,但是是一个事实上的标准,是对流式计算开源生态的一次大一统,相信未来Google会在大数据领域继续推出其他开源产品,对社区生态和云计算的理解也会越来越深。
Apache Beam—透视Google统一流式计算的野心的更多相关文章
- Apache Beam,批处理和流式处理的融合!
1. 概述 在本教程中,我们将介绍 Apache Beam 并探讨其基本概念. 我们将首先演示使用 Apache Beam 的用例和好处,然后介绍基本概念和术语.之后,我们将通过一个简单的例子来说明 ...
- Others-阿里专家强琦:流式计算的系统设计和实现
阿里专家强琦:流式计算的系统设计和实现 更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 阿里云数据事业部强琦为大家带来题为“流式计算的系统设计与实现”的演讲,本 ...
- 大数据入门第十六天——流式计算之storm详解(一)入门与集群安装
一.概述 今天起就正式进入了流式计算.这里先解释一下流式计算的概念 离线计算 离线计算:批量获取数据.批量传输数据.周期性批量计算数据.数据展示 代表技术:Sqoop批量导入数据.HDFS批量存储数据 ...
- 流式计算新贵Kafka Stream设计详解--转
原文地址:https://mp.weixin.qq.com/s?__biz=MzA5NzkxMzg1Nw==&mid=2653162822&idx=1&sn=8c4611436 ...
- 流式计算(二)-Kafka Stream
前面说了Java8的流,这里还说流处理,既然是流,比如水流车流,肯定得有流的源头,源可以有多种,可以自建,也可以从应用端获取,今天就拿非常经典的Kafka做源头来说事,比如要来一套应用日志实时分析框架 ...
- 流式计算(一)-Java8Stream
大约各位看官君多少也听说了Storm/Spark/Flink,这些都是大数据流式处理框架.如果一条手机组装流水线上不同的人做不同的事,有的装电池,有的装屏幕,直到最后完成,这就是典型的流式处理.如果手 ...
- Storm简介——实时流式计算介绍
概念 实时流式计算: 大数据环境下,流式数据将作为一种新型的数据类型,这种数据具有连续性.无限性和瞬时性.是实时数据处理所面向的数据类型,对这种流式数据的实时计算就是实时流式计算. 特征 实时流式计算 ...
- 流式计算(三)-Flink Stream 篇一
原创文章,谢绝任何形式转载,否则追究法律责任! 流的世界,有点乱,群雄逐鹿,流实在太多,看完这个马上又冒出一个,也不知哪个才是真正的牛,据说Flink是位重量级选手,能流计算,还能批处理, 和其他伙 ...
- Java的lamda表达式/函数式接口/流式计算
在我们看他人code的时候经常会看到,可能会经常看到lambda表达式,函数式接口,以及流式计算.在刚接触这些新功能时,也觉得真的有必要吗?但是现在写多了,发现这个功能确实能简化代码结构,提升编码效率 ...
随机推荐
- [NOI 2010]超级钢琴
Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙 的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙 ...
- [Codeforces 863E]Turn Off The TV
Description Luba needs your help again! Luba has n TV sets. She knows that i-th TV set will be worki ...
- [HAOI 2011]Problem c
Description 给n个人安排座位,先给每个人一个1~n的编号,设第i个人的编号为ai(不同人的编号可以相同),接着从第一个人开始,大家依次入座,第i个人来了以后尝试坐到ai,如果ai被占据了, ...
- bzoj 4545: DQS的trie
Description DQS的自家阳台上种着一棵颗粒饱满.颜色纯正的trie. DQS的trie非常的奇特,它初始有n0个节点,n0-1条边,每条边上有一个字符.并且,它拥有极强的生长力:某个i时刻 ...
- noip2017"退役"记
day0 口胡了一下去年的六道题,感觉很稳,看了6集动漫,0点钟就去睡了. day1 早上被一阵革命练习曲吵醒,而我还是窝在被子里不想起床(-﹃-)~zZ.于是室友开始放起了lost river... ...
- USACO 2017 February Platinum
第二次参加USACO 本来打算2016-2017全勤的 January的好像忘记打了 听群里有人讨论才想起来铂金组三题很有意思,都是两个排列的交叉对问题 我最后得分889/1000(真的菜) T1.W ...
- [bzoj4893]项链分赃
来自FallDream的博客,未经允许,请勿转载,谢谢. 有一串长度为n(n<=10^5)的项链,上面有红绿蓝三种颜色的珠子,每种颜色的珠子数目都是偶数,现在要你把它切几刀分成若干段,把其中一些 ...
- 使用webgl(three.js)搭建一个3D建筑,3D消防模拟——第三课
项目背景 消防安全一直是各大都市关注的重要课题,在消防体系中,特别是高楼消防体系中,消防系统整体布控与监控,火情有效准确定位,防火器材定位,人员逃生路径规划,火情预警,消防演习都是特别重要的环节.所以 ...
- python实现tab键自动补全
一.查询python安装路径,一般默认是/usr/lib64/ [root@host2 ~]# python Python (r266:, Jul , ::) [GCC (Red Hat -)] on ...
- C#+HtmlAgilityPack+Dapper走一波爬虫
最近因为公司业务需要,又有机会撸winform了,这次的需求是因为公司有项目申报的这块业务,项目申报前期需要关注政府发布的相关动态信息,政府部门网站过多,人工需要一个一个网站去浏览和查阅,有时候还会遗 ...