这篇文章主要讲解了“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上的操作和目录结构这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/boltwu/blog/714663