Jstorm基础架构

整体架构

Jstorm基础架构

深度基于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类中

上一篇:实践 Redux,第 1 部分: Redux-ORM 基础


下一篇:微信打开链接添加在浏览器中打开提示