Storm系列(九)架构分析之Supervisor-同步Nimbus的事件线程
来源:互联网 发布:莆田涵江淘宝培训 编辑:程序博客网 时间:2024/05/29 03:12
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中执行.
0 0
- Storm系列(九)架构分析之Supervisor-同步Nimbus的事件线程
- Storm系列(十一)架构分析之Supervisor-管理Worker进程的事件线程
- Storm系列(五)架构分析之Nimbus启动过程
- Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构
- Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构
- Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构
- Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构
- 【流式计算】Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构
- Storm上的Nimbus、Supervisor以及Worker之间的关系
- Storm上的Nimbus、Supervisor以及Worker之间的关系
- Storm上的Nimbus、Supervisor以及Worker之间的关系
- storm之nimbus作用
- storm启动nimbus源码分析-nimbus.clj
- storm-0.8.2源码分析之nimbus启动
- storm-0.8.2源码分析之nimbus运行过程(一)
- Apache Storm技术实战之1 -- nimbus启动场景分析
- storm-0.8.2源码分析1之nimbus启动
- Storm源码分析--Nimbus-data
- 第二章 标准语法
- Storm系列(五)架构分析之Nimbus启动过程
- Storm系列(六)架构分析之Scheduler-调度器[EventScheduler]
- Storm系列(七)架构分析之Scheduler-调度器[DefaultScheduler]
- 中国计算机学会推荐国际学术会议和期刊目录——网络与信息安全
- Storm系列(九)架构分析之Supervisor-同步Nimbus的事件线程
- Esper系列(二)时间窗口、长度窗口、cast、注解、自定义函数、静态方法
- lucene多种查询方式
- eclipse中variable references non-existion resource可能原因及解决方案
- Storm系列(十)聚流示例
- Storm系列(十一)架构分析之Supervisor-管理Worker进程的事件线程
- Storm系列(十二)架构分析之Worker-心跳信息处理
- 实验9 问题 D: 编写函数:字符串的复制 之二 (Append Code)
- Bugly错误监测Android SDK接入