jstorm 源码分析: supervisor

定位

supervisor在整个jstorm集群中主要是作用类似一个小管家:管理一台机器上的任务,包括从zookeeper上来负责领取任务、管理本机上的work、汇报本机信息到zookeeper上

结构

整体结构比较简单

    private final String hostName;                //机器的名称
    private final String supervisorId;           //唯一的id,通过随机数生成,格式: xxxxxxxx_xxxx_xxxx_xxxx_xxxxxxxxxxxx

    private Integer timeSecs;                     //上次心跳检测的时间
    private Integer uptimeSecs;                  //上次心跳检测离superviosr启动的时间

    private Set<Integer> workerPorts;            //work的端口

    private transient Set<Integer> availableWorkerPorts;   //空闲的work

分析

启动

启动过程代码

   Map<Object, Object> conf = Utils.readStormConfig();
            //是否分布式模式
            StormConfig.validate_distributed_mode(conf);
            //目录中写入pid
            createPid(conf);

            supervisorManager = mkSupervisor(conf, null);

            JStormUtils.redirectOutput("/dev/null");

            initShutdownHook(supervisorManager);

            while (supervisorManager.isFinishShutdown() == false) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {

                }
            }

大概分为几个过程:
1 获取配置文件
2 检测启动的模式,因为只有在分布式模式下才会有supervisor,本地模式不需要
3 把进程的id为文件名,在本地创建对应的文件 (后面详细介绍)
4 创建和启动supervisor(详细介绍)
5 最后不断检测这个进程是否结束了

进程文件创建

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值