Storm系列(九)架构分析之Supervisor-同步Nimbus的事件线程
Supervisor由三个线程组成,一个计时器线程和两个事件线程.
- 计时器线程负责维持心跳已经更新Zookeeper中的状态,还负责每隔一定的时间将事件线程需要执行的事件添加到其对应的队列中.
- 两个事件线程分别负责与Nimbus同步任务和根据任务变化同步管理Worker进程.
相关数据结构图:

同步Nimbus的事件线程
执行流程图:

方法原型:
| 1 | (defn mk-synchronize-supervisor [supervisor sync-processes event-manager process-event-manager]) |
参数说明:
Supervisor:supervisor-data对象。
Sync-processes:mk-supervisor中定义的用于同步当前supervisor启动的Worker的方法。
Event-manager:mk-supervisor中定义的用于运行mk-synchronize-supervisor方法的线程。
Process-event-manager:mk-supervisor中定义的运行sync-processes方法的线程。
方法说明:
- 获取supervisor中的配置信息,storm-local-cluster,isupervisor和local-state对象.
- 定义sync-callback方法,将mk-synchronize-supervisor方法再次加入到Nimbus任务的事件现场中执行,该方法用来在进行Zookeeper操作时设置回调方法,当Zookeeper中的内容发送变化时也会调用该方法.
- 调用read-storm-code-locations方法获取<storm-id,master-code-location>集合保存到storm-code-map.
- 调用read-downloaded-storm-ids方法获取当前已经下载Topology对应的storm id信息.
- 调用read-assignments方法获取分配给当前Supervisor的任务信息,返回<poer,LocalAssignment>集合保存给new-assignment.
- 调用assigned-storm-ids-from-port-assignments获取new-assignment中的storm-id,保存到assigned-storm-ids.
- 获取local-state中保存的LS-LOCAL-ASSIGNMENTS信息做为existing-assignment,<port,Assignment>.
- 调用download-storm-code下载当前已经分配给该Topology但还没下载到本地的Topology信息.
- 计算出属于existing-assignment但不属于new-assignment的端口信息,调用isupervisor的killedWorker方法关闭这些端口。
- 调用isupervisor的assigned方法设置新分配的端口信息.
- 更新local-state中保存的LS_LOCAL_ASSIGNMENT信息,设置为new-assignment.
- 更新supervisor-data中的curr-assignment信息,设置为new-assignment.
- 移除本地已下载但已不在assigned-storm-ids中的Topology.
- 将sync-process方法添加到process-event-manager中执行.
Storm系列(九)架构分析之Supervisor-同步Nimbus的事件线程的更多相关文章
- Storm系列(七)架构分析之Scheduler-调度器[DefaultScheduler]
Storm默认的任务调度器.实现如下: 1 (defn –prepare [this conf]) 2 (defn –schedule [this ^Topologies topologies ^ ...
- Storm系列(五)架构分析之Nimbus启动过程
启动流程图 mk-assignments 功能:对当前集群中所有Topology进行新一轮的任务调度. 实现源码路径: \apache-storm-0.9.4\storm-core\src\clj ...
- Nimbus<一>Storm系列(五)架构分析之Nimbus启动过程
启动流程图 mk-assignments 功能:对当前集群中所有Topology进行新一轮的任务调度. 实现源码路径: \apache-storm-0.9.4\storm-core\src\clj\b ...
- Storm系列(十一)架构分析之Supervisor-管理Worker进程的事件线程
处理流程: 方法原型: (defn sync-processes [supervisor]) 函数说明: Supervisor是一个supervisor-data对象. 从local-state中 ...
- Storm系列(六)架构分析之Scheduler-调度器[EventScheduler]
任务调度接口定义: 1 IScheduler{ 2 // conf为当前nimbus的stormp配置 3 void prepare(Map conf); // 初始化 4 // to ...
- Storm系列(十三)架构分析之Worker-维护ZMQ连接
Worker根据Topology的定义及分配到自身的任务情况,计算出发出的消息被那些Task接收,由于Worker上分配的任务可能被调整,因此Worker需要定时的更新这些连接信息. ZMQ连接信息更 ...
- Qualcomm Android display架构分析
Android display架构分析(一) http://blog.csdn.net/BonderWu/archive/2010/08/12/5805961.aspx http://hi.baidu ...
- 高通Android display架构分析
目录(?)[-] Kernel Space Display架构介绍 函数和数据结构介绍 函数和数据结构介绍 函数和数据结构介绍 数据流分析 初始化过程分析 User Space display接口 K ...
- java多线程系列(九)---ArrayBlockingQueue源码分析
java多线程系列(九)---ArrayBlockingQueue源码分析 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量的并发访问 j ...
随机推荐
- 利用jquery的imgAreaSelect插件实现图片裁剪示例
http://www.cnblogs.com/mizzle/archive/2011/10/13/2209891.html 将用户上传的图片进行裁剪再保存是现在web2.0应用中常常处理的工作,现在借 ...
- 关于xcode6打包以及上线前企业部署测试的说明 --转自张诚教授微博
xcode6如何打包 首先clean然后点击归档 点击打包之后保存 点选第一个以后检查相关证书签名 那么我们开发完以后,在上线前如何给别人测试 有2种方法 1.使用299美金的企业开发者账号搭建企业部 ...
- VS Extension: Create a txt file and set the content
使用 Visual Studio Extension 创建一个文本文件,并填入内容. 需要引用 EnvDTE C:\Program Files (x86)\Microsoft Visual Studi ...
- Asynchronous socket communication
来源:http://www.codeproject.com/Articles/1608/Asynchronous-socket-communication 本地下载 Download source f ...
- SDUT 1269 走迷宫(BFS)
点我看题目 题意:中文不详述. 思路 :上上上场比赛让一个BFS给虐了,上次比赛让一个三维的给废掉了.......所以急于从水题刷起......还因为数组开小了WA了5,6次 #include < ...
- php获取请求的方式(get/post)
$request_method = $_SERVER['REQUEST_METHOD'];//用什么方式访问 get post
- 禁用nginx的access日志
修改nginx.conf 找到access_log: access_log /dev/null; 或者access_log off
- NGUI 的使用教程与实例(入门)(1 )
NGUI教程:步骤1-Scene 1.创建一个新的场景(New Scene).2.选择并删除场景里的MainCamera.3.在NGUI菜单下选择Create a New UI,会打开UI创建向导. ...
- OpenSSH for Windows,CopSSH
https://www.oschina.net/p/openssh+for+windows https://www.oschina.net/p/copssh
- 执行gem install dryrun错误
ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for ...