注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Koala++'s blog

计算广告学 RTB

 
 
 

日志

 
 

计算广告学-搜索广告与广告网络Demand技术-流式计算平台  

2013-06-11 12:22:57|  分类: 计算广告学 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

搜索广告与广告网络Demand技术

原作者:刘鹏 @北冥乘海生

编辑:Koala++/屈伟

视频课程:师徒网

流式计算平台-Storm

         我们以Storm为例来看流式计算的功能是什么。

下面内容引用自大圆的博客。在Storm中,一个实时应用的计算任务被打包作为Topology发布,这同HadoopMapReduce任务相似。但是有一点不同的是:在Hadoop中,MapReduce任务最终会执行完成后结束;而在Storm中,Topology任务一旦提交后永远不会结束,除非你显示去停止任务。

计算任务Topology是由不同的SpoutsBolts,通过数据流(Stream)连接起来的图。下面是一个Topology的结构示意图:

计算广告学-搜索广告与广告网络Demand技术-流式计算平台 - quweiprotoss - Koala++s blog

 

其中包含有:

SpoutStorm中的消息源,用于为Topology生产消息(数据),一般是从外部数据源(如Message QueueRDBMSNoSQLRealtime Log)不间断地读取数据并发送给Topology消息(tuple元组)。在计算广告语境下,Spoutkey分发的可能是一些广告日志。

BoltStorm中的消息处理者,用于为Topology进行消息的处理,Bolt可以执行过滤, 聚合, 查询数据库等操作,而且可以一级一级的进行处理。

最终,Topology会被提交到storm集群中运行;也可以通过命令停止Topology的运行,将Topology占用的计算资源归还给Storm集群。

Storm数据流模型

         数据流(Stream)是Storm中对数据进行的抽象,它是时间上无界的tuple元组序列。在Topology中,SpoutStream的源头,负责为Topology从特定数据源发射StreamBolt可以接收任意多个Stream作为输入,然后进行数据的加工处理过程,如果需要,Bolt还可以发射出新的Stream给下级Bolt进行处理。

下面是一个Topology内部SpoutBolt之间的数据流关系:

计算广告学-搜索广告与广告网络Demand技术-流式计算平台 - quweiprotoss - Koala++s blog

 

Topology中每一个计算组件(SpoutBolt)都有一个并行执行度,在创建Topology时可以进行指定,Storm会在集群内分配对应并行度个数的线程来同时执行这一组件。

那么,有一个问题:既然对于一个SpoutBolt,都会有多个task线程来运行,那么如何在两个组件(SpoutBolt)之间发送tuple元组呢?

Storm提供了若干种数据流分发(Stream Grouping)策略用来解决这一问题。在Topology定义时,需要为每个Bolt指定接收什么样的Stream作为其输入(注:Spout并不需要接收Stream,只会发射Stream)。

个人认为Hadoop和流式计算有非常本质的区别,流式计算是调度数据的,而Hadoop核心是调度计算,Hadoop是尽量地不调度数据。而流式计算只能通过调度数据的方式进行。所以它只适合做短时间的用户行为的收集,如果要调度特别大量的数据,用流式计算成本会很高,而且瓶颈很快会达到。S4的图与Storm相似,但S4在配置多层任务的时候会方便一些,因为它里面所有的Node,都没有区别,只会声明自己接收的流量,所以配置多层结构,只用把key组织好。

 

  评论这张
 
阅读(2623)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017