storm在zookeeper中的目錄結構

資料來源:Twitter Storm源代碼分析之ZooKeeper中的目錄結構java

一、本機zookeeper中,storm目錄結構
node

[zk: 127.0.0.1:2181(CONNECTED) 12] ls /storm
[workerbeats, errors, supervisors, storms, assignments]
[zk: 127.0.0.1:2181(CONNECTED) 13]

二、在zookeeper中保存的數據目錄結構shell

一個要注意的地方是,做者在代碼裏面不少地方用到的storm-id, 其實就是topology-id的意思。我在郵件列表裏面問了他一下, 他說之前他把topology叫作storm, 代碼裏面尚未改過來。segmentfault

/-{storm-zk-root}           -- storm在zookeeper上的根
  |                            目錄
  |
  |-/assignments            -- topology的任務分配信息
  |   |
  |   |-/{topology-id}      -- 這個下面保存的是每一個
  |                            topology的assignments
  |                            信息包括: 對應的
  |                            nimbus上的代碼目錄,全部
  |                            task的啓動時間,
  |                            每一個task與機器、端口的映射
  |
  |-/tasks                  -- 全部的task
  |   |
  |   |-/{topology-id}      -- 這個目錄下面id爲
  |       |                    {topology-id}的topology
  |       |                    所對應的全部的task-id
  |       |
  |       |-/{task-id}      -- 這個文件裏面保存的是這個
  |                            task對應的component-id:
  |                            多是spout-id或者bolt-id
  |
  |-/storms                 -- 這個目錄保存全部正在運行
  |   |                        的topology的id
  |   |
  |   |-/{topology-id}      -- 這個文件保存這個topology
  |                            的一些信息,包括topology的
  |                            名字,topology開始運行的時
  |                            間以及這個topology的狀態
  |                            (具體看StormBase類)
  |
  |-/supervisors            -- 這個目錄保存全部的supervisor
  |   |                        的心跳信息
  |   |
  |   |-/{supervisor-id}    -- 這個文件保存的是supervisor
  |                            的心跳信息包括:心跳時間,主
  |                            機名,這個supervisor上worker
  |                            的端口號運行時間
  |                            (具體看SupervisorInfo類)
  |
  |-/taskbeats              -- 全部task的心跳
  |   |
  |   |-/{topology-id}      -- 這個目錄保存這個topology的所
  |       |                    有的task的心跳信息
  |       |
  |       |-/{task-id}      -- task的心跳信息,包括心跳的時
  |                            間,task運行時間以及一些統計
  |                            信息
  |
  |-/taskerrors             -- 全部task所產生的error信息
      |
      |-/{topology-id}      -- 這個目錄保存這個topology下面
          |                    每一個task的出錯信息
          |
          |-/{task-id}      -- 這個task的出錯信息

三、現版本中storm在zookeeper中的結構圖(資料來源:http://segmentfault.com/a/1190000000653595)app

/-{storm-zk-root}           -- storm在zookeeper上的根目錄(默認爲/storm)
  |
  |-/assignments            -- topology的任務分配信息
  |   |
  |   |-/{topology-id}      --  這個目錄保存的是每一個topology的assignments信息包括:對應的nimbus上
  |                         --  的代碼目錄,全部task的啓動時間,每一個task與機器、端口的映射。操做爲
  |                         --  (assignments)來獲取全部assignments的值;以及(assignment-info storm-id)
  |                         --  來獲得給定的storm-id對應的AssignmentInfo信息
  |                         --  在AssignmentInfo中存儲的內容有:
  |                         --  :executor->node+port :executor->start-time-secs :node->host
  |                         --  具體定義在common.clj中的
  |                         --  (defrecord Assignment[master-code-dir node->host executor->node+port                                    executor->start-time-secs])                        
  |
  |-/storms                 -- 這個目錄保存全部正在運行的topology的id
  |   |
  |   |
  |   |-/{topology-id}      -- 這個文件保存這個topology的一些信息,包括topology的名字,topology開始運行
  |                         -- 的時間以及這個topology的狀態。操做(active-storms),得到當前路徑活躍的下
  |                         -- topology數據。保存的內容參考類StormBase;(storm-base storm-id)獲得給定的
  |                         -- storm-id下的StormBase數據,具體定義在common.clj中的
  |      -- (defrecord StormBase [storm-name launch-time-secs status num-workers component->executors])
  |
  |-/supervisors            -- 這個目錄保存全部的supervisor的心跳信息
  |   |                        
  |   |
  |   |-/{supervisor-id}    -- 這個文件保存supervisor的心跳信息包括:心跳時間,主機名,這個supervisor上
  |                         -- worker的端口號,運行時間(具體看SupervisorInfo類)。操做(supervisors)獲得
  |                         -- 全部的supervisors節點;(supervisor-info supervisor-id)獲得給定的
  |                         -- supervisor-id對應的SupervisorInfo信息;具體定義在common.clj中的
  |                            
  |       -- (defrecord SupervisorInfo [time-secs hostname assignment-id used-ports meta scheduler-meta              uptime-secs])
  |
  |-/workerbeats                    -- 全部worker的心跳
  |   |
  |   |-/{topology-id}              -- 這個目錄保存這個topology的全部的worker的心跳信息
  |       |
  |       |-/{supervisorId-port}    -- worker的心跳信息,包括心跳的時間,worker運行時間以及一些統計信息
  |                                        
  |                                 -- 操做(heartbeat-storms)獲得全部有心跳數據的topology,
  |                                 -- (get-worker-heartbeat storm-id node port)獲得具體一個topology下
  |                                 -- 的某個worker(node:port)的心跳情況,
  |                          -- (executor-beats storm-id executor->node+port)獲得一個executor的心跳情況
  |
  |-/errors                  -- 全部產生的error信息
  |
  |-/{topology-id}           -- 這個目錄保存這個topology下面的錯誤信息。操做(error-topologies)獲得出錯
      |                      -- 的topology;(errors storm-id component-id)獲得
      |                      -- 給定的storm-id component-id下的出錯信息
      |-/{component-id}
相關文章
相關標籤/搜索