处理流程:

 

方法原型:

(defn sync-processes [supervisor])

函数说明:

Supervisor是一个supervisor-data对象.

  1. 从local-state中获取LS_LOCAL_ASSIGNMENTS集合<port,Assignment>集合,保存到assigned-executors。
  2. 调用read-allocated-workers获取当前已经分配的Worker信息,<worker-id,<worker state,worker heartbeat>>集合,保存到allocated,其中记录了与当前分配的Worker相对应的状态和心态信息。
  3. 从allocated中过滤,保留其中worker-state为:valid的Worker,保存到keepers。
  4. 从keepers数据项中的心跳信息中获取其所对应的端口信息,保存到keep-ports.
  5. 根据assigned-executor和keep-ports,确定需重新分配的executor信息,返回<port,Assignment>集合,保存到reassign-executors.
  6. 为reassign-executors中的每个端口创建一个新的worker-id,返回<port,worker-id> 集合,保存到new-worker-ids.
  7. 对allocated集合中worker-state不为:valid的Worker调用shutdown-worker方法 关闭。
  8. 为new-worker-ids集合中的每个worker-id创建pid文件夹,路径为STORM_LOCAL_DIR/workers/<worker-id>/pids/
  9. 更新local-state中存储的LS_APPROVED-WORKERS信息。 获取当前local-state中存储的LS-APPROVED-WORKERS信息,再根据 将keepers过滤出有效的Worker信息最后与new-worker-ids合并进行保存到local-state。
  10. 调用launch-worker方法启动 Worker,返回启动的Worker的worker-id,最后调用wait-for-workers-launch方法等待这些Worker启动起来.

 

Supervisor启动流程

Storm系列(十一)架构分析之Supervisor-管理Worker进程的事件线程的更多相关文章

  1. Storm系列(九)架构分析之Supervisor-同步Nimbus的事件线程

    Supervisor由三个线程组成,一个计时器线程和两个事件线程. 计时器线程负责维持心跳已经更新Zookeeper中的状态,还负责每隔一定的时间将事件线程需要执行的事件添加到其对应的队列中. 两个事 ...

  2. Storm系列(七)架构分析之Scheduler-调度器[DefaultScheduler]

    Storm默认的任务调度器.实现如下: 1  (defn –prepare [this conf]) 2  (defn –schedule [this ^Topologies topologies ^ ...

  3. Storm系列(五)架构分析之Nimbus启动过程

    启动流程图   mk-assignments 功能:对当前集群中所有Topology进行新一轮的任务调度. 实现源码路径: \apache-storm-0.9.4\storm-core\src\clj ...

  4. Nimbus<一>Storm系列(五)架构分析之Nimbus启动过程

    启动流程图 mk-assignments 功能:对当前集群中所有Topology进行新一轮的任务调度. 实现源码路径: \apache-storm-0.9.4\storm-core\src\clj\b ...

  5. Storm系列(六)架构分析之Scheduler-调度器[EventScheduler]

    任务调度接口定义: 1  IScheduler{ 2      // conf为当前nimbus的stormp配置 3  void prepare(Map conf); // 初始化 4  // to ...

  6. Storm系列(十三)架构分析之Worker-维护ZMQ连接

    Worker根据Topology的定义及分配到自身的任务情况,计算出发出的消息被那些Task接收,由于Worker上分配的任务可能被调整,因此Worker需要定时的更新这些连接信息. ZMQ连接信息更 ...

  7. 使用Supervisor管理Linux进程

    使用Supervisor管理Linux进程 简介 Supervisor是一个C/S系统,它可以在类UNIX系统上控制系统进程,由python编写,提供了大量的功能来实现对进程的管理. 安装 sudo ...

  8. celery和supervisor配合使用,实现supervisor管理celery进程

    在这里我选择redis作为celery异步任务的中间人,系统选择CentOS6.5 64位.redis.celery和supervisor的安装参见官方文档. 安装完毕后: 1, 创建celery的实 ...

  9. 使用Supervisor管理Celery进程。

    讲过一篇celery的,但是celery启动后并不是daemon的,在生产环境中这肯定是不可以的,那怎么办呢? 这就需要使用supervisor进行进程管理了,下面详细介绍. 一. superviso ...

随机推荐

  1. python 列表推导的注意点

    Code a = [1,2,2,3] b = [for item in a if item not in b] c = [] for item in a: if item not in c: c.ap ...

  2. LINQ实战

    转载:http://www.cnblogs.com/yubinfeng/p/4567064.html    原作者:尼古拉斯~yu 文章部分内容在原文的基础上有删改. 我相信在net进阶的这个阶段,很 ...

  3. Codeforces Round #345 (Div. 1) B. Image Preview

    Vasya's telephone contains n photos. Photo number 1 is currently opened on the phone. It is allowed ...

  4. Oracle 分析函数之聚集函数(MAX、MIN、AVG和SUM)

    MAX 查找组中表达式的最大值 MAX(COL ) OVER ( [ <partition_by_clause> ] < order_by_clause > )MIN 查找组中 ...

  5. iis认证方式

    http://msdn.microsoft.com/en-us/library/aa302377.aspx

  6. BZOJ 1227 虔诚的墓主人

    Description 小W 是一片新造公墓的管理人.公墓可以看成一块N×M 的矩形,矩形的每个格点,要么种着一棵常青树,要么是一块还没有归属的墓地.当地的居民都是非常虔诚的基督徒,他们愿意提前为自己 ...

  7. linux环境下验证码不显示的几种情况

    linux环境下验证码不显示的几种情况 gd库扩展没有安装. 查看phpinfo(),看看有没有安装gd库 yum安装gd库或者phpize安装 安装完成后记得重启php-fpm bom头的原因 在生 ...

  8. Provider Communication with Apple Push Notification Service

    This chapter describes the interfaces that providers use for communication with Apple Push Notificat ...

  9. AOT

    预 (AOT) 编译器 https://angular.cn/docs/ts/latest/cookbook/aot-compiler.html To run your app in AoT mode ...

  10. 将cocos2dx项目从VS移植到Eclipse

    本文转自:http://www.cnblogs.com/Z-XML/p/3349518.html 引言:我们使用cocos2d-x引擎制作了一款飞行射击游戏,其中创新性地融入了手势识别功能.但是我们在 ...