Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构

      storm集群里面工作机器分为两种一种是nimbus, 一种是supervisor, 他们通过zookeeper来进行交互,nimbus通过zookeeper来发布一些指令,supervisor去读zookeeper来执行这些指令!

     具体nimbus和supervisor在zookeeper上交换了哪些信息可以看一下这篇文章: Twitter Storm源代码分析之ZooKeeper中的目录结构。知道了他们在zookeeper存的信息之后,大家一定想知道nimbus和zookeeper在自己本机存了什么信息呢?这篇文章给你介绍。代码主要包括config.cljnimbus.clj,supervisor.cljworker.clj

注意:下面目录结构里面, nimbus机器上面只有/nimbus目录,supervisor机器上面只有/supervisor目录和/workers目录。

复制代码
 1 /{storm-local-dir}
 2   |
 3   |-/nimbus
 4   |   |
 5   |   |-/inbox                     -- 从nimbus客户端上传的jar包
 6   |   |  |                            会在这个目录里面
 7   |   |  |
 8   |   |  |-/stormjar-{uuid}.jar    -- 上传的jar包其中{uuid}表示
 9   |   |                               生成的一个uuid
10   |   |
11   |   |-/stormdist
12   |      |
13   |      |-/{topology-id}
14   |         |
15   |         |-/stormjar.jar        -- 包含这个topology所有代码
16   |         |                         的jar包(从nimbus/inbox里
17   |         |                         面挪过来的)
18   |         |
19   |         |-/stormcode.ser       -- 这个topology对象的序列化
20   |         |
21   |         |-/stormconf.ser       -- 运行这个topology的配置
22   |
23   |-/supervisor
24   |   |
25   |   |-/stormdist
26   |   |   |
27   |   |   |-/{topology-id}
28   |   |      |
29   |   |      |-/resources          -- 这里保存的是topology的
30   |   |      |                        jar包里面的resources目录
31   |   |      |                        下面的所有文件
32   |   |      |
33   |   |      |-/stormjar.jar       -- 从nimbus机器上下载来的
34   |   |      |                        topology的jar包
35   |   |      |
36   |   |      |-/stormcode.ser      -- 从nimbus机器上下载来的
37   |   |      |                        这个topology对象的序列
38   |   |      |                        化形式
39   |   |      |
40   |   |      |-/stormconf.ser      -- 从nimbus机器上下载来的
41   |   |                               运行这个topology的配置
42   |   |
43   |   |-/localstate                -- supervisor的localstate
44   |   |
45   |   |-/tmp                       -- 临时目录,从Nimbus上下
46   |      |                            载的文件会先存在这个目
47   |      |                            录里面,然后做一些简单
48   |      |                            处理再copy到
49   |      |                            stormdist/{topology-id}
50   |      |                            里面去
51   |      |-/{uuid}
52   |         |
53   |         |-/stormjar.jar        -- 从Nimbus上面download下
54   |                                   来的工作jar包
55   |
56   |-/workers
57       |
58       |-/{worker-id}
59           |
60           |-/pids                  -- 一个worker可能会起多个子
61           |   |                       进程所以可能会有多个pid
62           |   |
63           |   |-/{pid}             -- 运行这个worker的JVM的pid
64           |
65           |-/heartbeats            -- 这个supervisor机器上的
66              |                        worker的心跳信息
67              |
68              |-/{worker-id}        -- 这里面存的是一个worker
69                                       的心跳:主要包括心跳时
70                                       间和worker的id
复制代码
原文地址:https://www.cnblogs.com/catkins/p/5251003.html