Storm在zookeeper上的目錄結構

[this storm-id])
 (teardown-topology-errors! [this storm-id])
 (heartbeat-storms [this])
 (error-topologies [this])
 (worker-heartbeat! [this storm-id node port info])
 (remove-worker-heartbeat! [this storm-id node port])
 (supervisor-heartbeat! [this supervisor-id info])
 (activate-storm! [this storm-id storm-base])
 (update-storm! [this storm-id new-elems])
 (remove-storm-base! [this storm-id])
 (set-assignment! [this storm-id info])
 (remove-storm! [this storm-id])
 (report-error [this storm-id task-id node port error])
 (errors [this storm-id task-id])
 (disconnect [this]))node

 

Storm中在Zookeeper中存儲的目錄this

 

(def ASSIGNMENTS-ROOT "assignments")
(def CODE-ROOT "code")
(def STORMS-ROOT "storms")
(def SUPERVISORS-ROOT "supervisors")
(def WORKERBEATS-ROOT "workerbeats")
(def ERRORS-ROOT "errors")

(def ASSIGNMENTS-SUBTREE (str "/" ASSIGNMENTS-ROOT))
(def STORMS-SUBTREE (str "/" STORMS-ROOT))
(def SUPERVISORS-SUBTREE (str "/" SUPERVISORS-ROOT))
(def WORKERBEATS-SUBTREE (str "/" WORKERBEATS-ROOT))
(def ERRORS-SUBTREE (str "/" ERRORS-ROOT))spa

從上面來看,在Zookeeper中主要是有以下的五個子目錄:code

  1. /assignments -> 任務分配信息
  2. /storms -> 正在運行的topology的ID
  3. /supervisors -> 全部的Supervisors的心跳信息
  4. /workerbeats -> 全部的Worker的心跳
  5. /errors -> 產生的出錯信息

 

結構圖component

 

/-{storm-zk-root}          -- stormzookeeper上的根目錄(默認爲/storm)
 |
 |-/assignments            -- topology的任務分配信息
 |   |
 |   |-/{topology-id}      -- 這個下面保存的是每一個topologyassignments信息包括: 對應的
 |                            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的心跳信息包括:心跳時間,主
 |                            機名,這個supervisorworker的端口號運行時間(具體看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}orm

相關文章
相關標籤/搜索