jstorm源码分析: zookeeper
2016-10-16 21:36
281 查看
作用
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对象,这里就不介绍啦。相关文章推荐
- zookeeper3.3.3源码分析(二)FastLeader选举算法
- zookeeper源码阅读分析笔记--客户端服务端通信机制以及session超时、过期处理
- Solr源码掘金之 SolrCloud中的zookeeper使用分析
- Zookeeper源码分析:Watcher机制
- ZooKeeper源码分析:Quorum请求的整个流程
- zookeeper3.3.3源码分析(二)FastLeader选举算法
- storm操作zookeeper源码分析-cluster.clj
- Zookeeper源码分析(一)-Zookeeper启动过程
- apache kafka源码分析走读-ZookeeperConsumerConnector分析
- ZooKeeper源码分析:Log和Snapshot持久化(SyncRequestProcessor类)
- Zookeeper源码分析(1)- Zookeeper的启动流程
- Zookeeper源码分析(8)- CommitProcessor
- Zookeeper源码分析(11)- FollowerRequestProcessor
- Zookeeper源码分析(5)- PrepRequestProcessor
- storm操作zookeeper源码分析-cluster.clj
- Storm-源码分析- Storm中Zookeeper的使用
- Zookeeper源码分析(4)- Follower执行流程
- Zookeeper源码分析(6)- ProposalRequestProcessor
- Jstorm源码分析--kill、rebanlance、activate、deactivate方法流程
- zookeeper进阶(二)leader选举源码分析