@(STORM)[storm]
storm目录结构及在zk中的目录结构一storm在磁盘中的内容 一nimbus中的目录结构 1inbox目录2stormdist目录 二supervisor中的目录结构 1supervisor目录2worker-users目录3worker目录 二storm在zookeeper中的信息 1assignment2storms3supervisor4workerbeats5errors6credentials/home/data/storm/nimbus目录有2个子目录 inbox stormdist
2个jar包
ls inbox/ stormjar-32a7ece3-30f6-46b0-a85a-f8a6d7bedd4b.jar stormjar-9d203ae1-55e3-46aa-a503-e0f64dc77850.jar与supervisro相同,见下面。
/home/data/storm目录下有3个目录
supervisor workers workers-users就是supervisor的一些信息,包括拓扑的jar包等
$ tree . |-- isupervisor | |-- 1448866045210 | `-- 1448866045210.version |-- localstate | |-- 1448867673421 | |-- 1448867673421.version | |-- 1448867676421 | |-- 1448867676421.version | |-- 1448867677289 | |-- 1448867677289.version | |-- 1448867677292 | `-- 1448867677292.version |-- stormdist | |-- ma321-13-1448866092 | | |-- stormcode.ser | | |-- stormconf.ser | | `-- stormjar.jar | `-- test-9-1448861412 | |-- stormcode.ser | |-- stormconf.ser | `-- stormjar.jar `-- tmpstormdist目录是nimbus分发过来的代码、配置及jar包。 nimbus的stormdist目录下也有相同的目录,内容也一样。不同之处是nimbus有全部拓扑的内容,而supervisor只有分配到的拓扑的内容。
stormjar.jar是topo的代码jar包。 stormcode.ser是拓扑的序列化文件,包括拓扑的各个组件的详细信息与它们之间的关系。 stormconf.ser是topo的配置信息
worker-users里面有一些空文件,这些文件的名字就是worker的id,如
ls -l workers-users/ total 0 -rw-r--r-- 1 hadoop hadoop 0 11月 30 14:48 917efffc-2ee6-4392-b365-06bc3a846a4c -rw-r--r-- 1 hadoop hadoop 0 11月 30 14:50 fee027e3-a737-4f49-9c85-da5bb4acc43cworkers里面则是每个worker的一些信息,如心跳与pid的记录
total 8 drwxr-xr-x 4 hadoop hadoop 4096 11月 30 14:48 917efffc-2ee6-4392-b365-06bc3a846a4c drwxr-xr-x 4 hadoop hadoop 4096 11月 30 14:50 fee027e3-a737-4f49-9c85-da5bb4acc43c注意这些是目录,这些目录下的内容如下:
ls 917efffc-2ee6-4392-b365-06bc3a846a4c/ heartbeats pids因此,当在worker目录定位到一个worker,但想要启动这个worker,却在supervisor目录中找不到对应的内容,因此启动失败。
有一些解释,但版本较老:http://xumingming.sinaapp.com/466/twitter-storm-code-analysis-zookeeper-dirs/
storm在zookeeper中有以下6个目录(默认在/storm下)
/assignments -> 任务分配信息 /storms -> 正在运行的topology的ID /supervisors -> 所有的Supervisors的心跳信息 /workerbeats -> 所有的Worker的心跳 /errors -> 产生的出错信息 /credentials ->认证信息任务的分配信息,supervisor会不断的读取这里的信息,看有没有被分配的任务需要处理。
正在运行的拓扑id
所有的Supervisors的心跳信息
每个worker的心跳信息
错误信息, UI即通过在这里读取信息来显示
认证信息