整体架构
深度基于Zookeeper的调度系统。
Jstorm ZK路径
/-{storm.zookeeper.root} -- Jstorm在zookeeper上的根目录,需要在jstorm中配置~/.jstorm/storm.yaml
|
|
|-/nimbus_master -- nimbus_master 的ip和端口
|
|-/nimbus_slave --nimbus_slave信息,如果没有nimbus slave,此节点没有信息
|
|-/supervisors -- 所有的supervisor的心跳信息
| |
| |-/{supervisor-id} -- class SupervisorInfo,hostName,supervisorId,timeSecs(心跳最后更新时间),uptimeSecs(运行时间),version,port, Set<workerPort>,Set<availableWorkerPort>,Map<Object, Object> supervisorConf
|
|
|-/assignments --所有拓扑的分配资源信息
| |
| |-/{topology-id} -- class Assignment,<supervisorId, hostname>--主机映射,masterCodeDir--nimbus上的代码目录,<TaskId, StartUpTime> 所有task的启动时间, Set<ResourceWorkerSlot>,每个Worker的资源分配,包括hostname,memSize,cpu,tasks,jvm
|
|-/assignments_bak -- 备份所有拓扑的分配资源信息
| |
| |-/{topology-name} -- class AssignmentBak, Assignment assignment--分配信息备份,Map<ComponentId, List<TaskId>> 一个组件对应多个Task
|
|
|-/blobstoremaxkeysequencenumber --大对象的存储最大的序号,当使用BlobStore Nimbus Local 模式时保持一致性
|
|-/topology
| |
| |-/{topology-id} --class StormBase ,记录topologyName,lanchTimeSecs,Topology status,enableMonitor,group
|
|-/blobstore --Blobstore 有两种模式,Nimbus Local 和 HDFS,默认是本地配置,使用Nimbus Local时需要zookeeper保证一致性,而HDFS自身已经提供了
| |
| |-{} --本地模式blobstore会存放到 storm.local.dir/blobs/ 目录,自定义存放目录可以通过blobstore.dir强制指定一个绝对路径。
|
|-/taskbeats
| |
| |-/{topology-id}
| |
| |-/{task-id} -- class TopologyTaskHbInfo, Map<TaskId,TaskHeartbeat>--task的心跳,topologyId,topologyMasterId
|
|
|
|-/tasks
| |
| |-/{topology-id} -- Map<TaskId, TaskInfo> 一个taskId对应一个组件信息TaskInfo,一个组件可能是Spout或者Bolt,class TaskInfo,componentId,componentType
|
|
|-/taskerrors --所有topology task的错误信息
| |
| |-/{topology-id}
| |
| |-/{task-id} -- 对应task的出错信息
| | |
| | |-/{time} -- 时间戳,以妙为单位,只保存最近两个错误,通过 zkCluster.report_task_error(topologyId, taskId, errorMessge),可以自定义错误,界面会显示"E(2)"
| |
| |-/{last_error} -- 最后的错误信息 Map<Integer, String> lastErrInfo
|
|
|-/metrics
| |
| |-/__NIMBUS__ --nimbus metric信息
| |-/__SUPERVISOR__ --superviser metric信息
| |-/{topology-id} --topology metric信息
| |-/ __CLUSTER__ --cluster metric信息
|
|
|-/nimbus_slave_detail -- nimbus_slave细节信息
| |
| |-/{hostPort} -- mtmp.put("nimbus.differ.count.zk", diffCount);
|
|
Jstorm 所有的zk路径都在 com.alibaba.jstorm.cluster.Cluster类中