jstorm源码分析: zookeeper

作用

zookeeper在整个系统中主要用户各个角色信息传递的中介,所以里面存了不少的信息

信息

我们只要打开zookeeper目录,可以看到很多的信息,下面一一介绍

supervisors

这里存放了集群中所有的supervisor的信息, 具体保存时候按照supervisor_id为目录名保存,具体的信息使用SupervisorInfo类进行保存,如下

   private static final long serialVersionUID = -8384417078907518922L;

    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

nimbus_master和nimbus_slavel

这里保存了nimbus的信息,一个是主,一个是备的,具体的信息如下

assignment

当我们把一个storm的任务提交给nimbus后,他就会负责给这个任务相关的资源、work以及task分配,这些信息都保存在这里,具体的Assignment这个类来实现的

    //代码、配置和jar所在的路径  nimbus/stormdist]/topology_id/
    private final String masterCodeDir;
    /**
     * @@@ nodeHost store <supervisorId, hostname>, this will waste some zk storage
     */
    //机器信息 <supervisorId, hostname>关系
    private final Map<String, String> nodeHost;
    // task启动的时间 <taskId, startTime>
    private final Map<Integer, Integer> taskStartTimeSecs;
    // 所有分配的work
    private final Set<ResourceWorkerSlot> workers;
    // 任务的更新时间
    private long timeStamp;
    //任务的类型: 新建,更新,重新平衡,
    private AssignmentType type;

topology

这里存放的是我们提交的任务信息,对应的StormBase这个类。我们的nimbus启动时候,其中有个TopologyAssign成员,它主要负责接受提交的任务,现在任务写到zookeeper的目录下去


  private static final long serialVersionUID = -3013095336395395213L;
    private String stormName;       //任务的名称
    private int lanchTimeSecs;      //任务提交时间
    private StormStatus status;     //任务状态    active("active"), inactive("inactive"), rebalancing("rebalancing"), killed("killed"),
    private boolean enableMonitor = true;  //是否开启监控
    private String group;           //这个是干什么用的?

tasks

这里存放当前集群上所有的task信息,按照 topology_name/task_id目录进行存储,具体的信息如下:

    private String componentId;         //task所运行的组件的id
    private String componentType;       //组件类型: bolt, spout,

taskbeats

task的心跳信息

struct TaskHeartbeat {
    1: required i32 time;
    2: required i32 uptime;
}

struct TopologyTaskHbInfo {
    1: required string topologyId;
    2: required i32 topologyMasterId;
    3: optional map<i32, TaskHeartbeat> taskHbs;
}

每个task有个启动时间,有个更新时间

taskerrors

这里存放了所有task的错误信息,按照topology_id/task_id/time_stamp/error_info这样保存的,每个任务保留最新的几个错误,老的不保存,另外在一个 topology下,还有个last_error这个保存最新的错误,提交效率。 具体错误信息就是一个String对象,这里就不介绍啦。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值