Storm系列(十一)架构分析之Supervisor-管理Worker进程的事件线程
2015-10-05 09:55
585 查看
处理流程:
方法原型:
(defn sync-processes [supervisor])
函数说明:
Supervisor是一个supervisor-data对象.
从local-state中获取LS_LOCAL_ASSIGNMENTS集合<port,Assignment>集合,保存到assigned-executors。
调用read-allocated-workers获取当前已经分配的Worker信息,<worker-id,<worker state,worker heartbeat>>集合,保存到allocated,其中记录了与当前分配的Worker相对应的状态和心态信息。
从allocated中过滤,保留其中worker-state为:valid的Worker,保存到keepers。
从keepers数据项中的心跳信息中获取其所对应的端口信息,保存到keep-ports.
根据assigned-executor和keep-ports,确定需重新分配的executor信息,返回<port,Assignment>集合,保存到reassign-executors.
为reassign-executors中的每个端口创建一个新的worker-id,返回<port,worker-id> 集合,保存到new-worker-ids.
对allocated集合中worker-state不为:valid的Worker调用shutdown-worker方法 关闭。
为new-worker-ids集合中的每个worker-id创建pid文件夹,路径为STORM_LOCAL_DIR/workers/<worker-id>/pids/
更新local-state中存储的LS_APPROVED-WORKERS信息。 获取当前local-state中存储的LS-APPROVED-WORKERS信息,再根据 将keepers过滤出有效的Worker信息最后与new-worker-ids合并进行保存到local-state。
调用launch-worker方法启动 Worker,返回启动的Worker的worker-id,最后调用wait-for-workers-launch方法等待这些Worker启动起来.
Supervisor启动流程
方法原型:
(defn sync-processes [supervisor])
函数说明:
Supervisor是一个supervisor-data对象.
从local-state中获取LS_LOCAL_ASSIGNMENTS集合<port,Assignment>集合,保存到assigned-executors。
调用read-allocated-workers获取当前已经分配的Worker信息,<worker-id,<worker state,worker heartbeat>>集合,保存到allocated,其中记录了与当前分配的Worker相对应的状态和心态信息。
从allocated中过滤,保留其中worker-state为:valid的Worker,保存到keepers。
从keepers数据项中的心跳信息中获取其所对应的端口信息,保存到keep-ports.
根据assigned-executor和keep-ports,确定需重新分配的executor信息,返回<port,Assignment>集合,保存到reassign-executors.
为reassign-executors中的每个端口创建一个新的worker-id,返回<port,worker-id> 集合,保存到new-worker-ids.
对allocated集合中worker-state不为:valid的Worker调用shutdown-worker方法 关闭。
为new-worker-ids集合中的每个worker-id创建pid文件夹,路径为STORM_LOCAL_DIR/workers/<worker-id>/pids/
更新local-state中存储的LS_APPROVED-WORKERS信息。 获取当前local-state中存储的LS-APPROVED-WORKERS信息,再根据 将keepers过滤出有效的Worker信息最后与new-worker-ids合并进行保存到local-state。
调用launch-worker方法启动 Worker,返回启动的Worker的worker-id,最后调用wait-for-workers-launch方法等待这些Worker启动起来.
Supervisor启动流程
相关文章推荐
- 页面架构-布局解决方案
- 营销文案好有个毛用
- CDN对流媒体和应用分发的支持及优化 | 高可用CDN架构详解
- java 学习写架构必会几大技术点
- Web基础架构:负载均衡和LVS
- CLI架构开发
- Linux异步回调架构的实现
- 【Ogre引擎架构】第七讲 粒子系统-爆破特效
- dede 常用网站开发标签
- Hbase笔记二:简明系统架构
- Hadoop YARN架构设计要点
- Yahoo!团队实践分享:网站性能优化的34条黄金守则
- Loadrunner自带的网站WebTours打不开
- 网站关键词优化--如何确6定目标关键词
- 网站用户存在状态的session用法及例子
- 关注的网站
- MVC在Web系统中的模式与应用--架构模式
- <从编程到(架构)设计之路>的翻转式系列课程
- Heartbleed 实战:一个影响无数网站的缓冲区溢出漏洞
- JS控制网站样式改变的原理