设为首页 加入收藏

TOP

Storm基础框架分析
2015-07-26 13:14:12 来源: 作者: 【 】 浏览:20
Tags:Storm 基础 框架 分析

前期收到的问题:


本篇来建立一个基本的背景,来大概看下构成storm流式计算能力的一些基础框架,并部分回答第一个问题。


这里写图片描述


supervisor会定时从zookeeper获取拓补信息topologies、任务分配信息assignments及各类心跳信息,以此为依据进行任务分配。


在supervisor同步时,会根据新的任务分配情况来启动新的worker或者关闭旧的worker并进行负载均衡。


worker通过定期的更新connections信息,来获知其应该通讯的其它worker。


worker启动时,会根据其分配到的任务启动一个或多个executor线程。这些线程仅会处理唯一的topology。
如果有新的tolopogy被提交到集群,nimbus会重新分配任务,这个后面会说到。


executor线程负责处理多个spouts或者多个bolts的逻辑,这些spouts或者bolts,也称为tasks。


具体有多少个worker,多少个executor,每个executor负责多少个task,是由配置和指定的parallelism-hint共同决定的,但这个值并不一定等于实际运行中的数目。


如果计算出的总的executors超过了nimbus的限制,此topology将不会得到执行。


并行度的作用:


上述代码会在nimbus进行任务分配时调用:


基本关系如下所示:


这里写图片描述


所谓本地发布,是指在worker进程内及executor线程间进行消息发布。
所谓远程发布,是指在worker进程间、不同的机器间进行消息发布。



集群的状态机:


这里写图片描述


集群的状态是通过一个storm-cluster-state的对象来描述的。
其提供了许多功能接口,比如:


如下图所示:


这里写图片描述


所以,nimbus会根据心跳、topologies信息及已分配的任务信息为依据,来重新分配任务,如下图所示:


这里写图片描述


一个topology的提交过程:


主要过程如下图所示:


这里写图片描述


以上,基本阐述了storm的基础框架,但未涉及trident机制,也基本回答了问题1。


终。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Storm如何保证at least once语义? 下一篇Storm如何分配任务和负载均衡?

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: