[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
結構圖component
/-{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}orm