您好,登錄后才能下訂單哦!
這篇文章主要講解了“Storm在zookeeper上的操作和目錄結構”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Storm在zookeeper上的操作和目錄結構”吧!
Zookeeper的操作
(defprotocol ClusterState (set-ephemeral-node [this path data]) (delete-node [this path]) (create-sequential [this path data]) (set-data [this path data]) ;; if node does not exist, create persistent with this data (get-data [this path watch?]) (get-children [this path watch?]) (mkdirs [this path]) (close [this]) (register [this callback]) (unregister [this id]) )
Storm使用Zookeeper的操作
(defprotocol StormClusterState (assignments [this callback]) (assignment-info [this storm-id callback]) (active-storms [this]) (storm-base [this storm-id callback]) (get-worker-heartbeat [this storm-id node port]) (executor-beats [this storm-id executor->node+port]) (supervisors [this callback]) (supervisor-info [this supervisor-id]) ;; returns nil if doesn't exist (setup-heartbeats! [this storm-id]) (teardown-heartbeats! [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 error]) (errors [this storm-id task-id]) (disconnect [this]) )
Storm中在Zookeeper中存儲的目錄
(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))
/assignments -> 任務分配信息
/storms -> 正在運行的topology的ID
/supervisors -> 所有的Supervisors的心跳信息
/workerbeats -> 所有的Worker的心跳
/errors -> 產生的出錯信息
結構圖
/-{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
感謝各位的閱讀,以上就是“Storm在zookeeper上的操作和目錄結構”的內容了,經過本文的學習后,相信大家對Storm在zookeeper上的操作和目錄結構這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。