Twitter Storm源代码分析之ZooKeeper中的目录结构

本文解析了TwitterStorm如何利用ZooKeeper进行任务分配、状态监控等操作,并详细介绍了其在ZooKeeper中的数据目录结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明

网址: http://xumingming.sinaapp.com/466/twitter-storm-code-analysis-zookeeper-dirs/

 
我们知道Twitter Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeeper上面写状态信息来分配任务,supervisortask通过从zookeeper中读状态来领取任务,同时supervisor, task也会定义发送心跳信息到zookeeper使得nimbus可以监控整个storm集群的状态,从而可以重启一些挂掉的taskZooKeeper 使得整个storm集群十分的健壮任何一台工作机器挂掉都没有关系,只要重启然后从zookeeper上面重新获取状态信息就可以了。本文主要介绍Twitter StormZooKeeper中保存的数据目录结构,源代码主要是backtype.storm.cluster, 废话不多说,直接看下面的结构图:

一个要注意的地方是,作者在代码里面很多地方用到的storm-id, 其实就是topology-id的意思。我在邮件列表里面问了他一下,他说以前他把topology叫做storm, 代码里面还没有改过来。


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

/-{storm-zk-root}           -- storm在zookeeper上的根

  |                            目录

  |

  |-/assignments            -- topology的任务分配信息

  |   |

  |   |-/{topology-id}      -- 这个下面保存的是每个

  |                            topology的assignments

  |                            信息包括: 对应的

  |                            nimbus上的代码目录,所有

  |                            task的启动时间,

  |                            每个task与机器、端口的映射

  |

  |-/tasks                  -- 所有的task

  |   |

  |   |-/{topology-id}      -- 这个目录下面id为

  |       |                    {topology-id}的topology

  |       |                    所对应的所有的task-id

  |       |

  |       |-/{task-id}      -- 这个文件里面保存的是这个

  |                            task对应的component-id:

  |                            可能是spout-id或者bolt-id

  |

  |-/storms                 -- 这个目录保存所有正在运行

  |   |                        的topology的id

  |   |

  |   |-/{topology-id}      -- 这个文件保存这个topology

  |                            的一些信息,包括topology的

  |                            名字,topology开始运行的时

  |                            间以及这个topology的状态

  |                            (具体看StormBase类)

  |

  |-/supervisors            -- 这个目录保存所有的supervisor

  |   |                        的心跳信息

  |   |

  |   |-/{supervisor-id}    -- 这个文件保存的是supervisor

  |                            的心跳信息包括:心跳时间,主

  |                            机名,这个supervisor上worker

  |                            的端口号运行时间

  |                            (具体看SupervisorInfo类)

  |

  |-/taskbeats              -- 所有task的心跳

  |   |

  |   |-/{topology-id}      -- 这个目录保存这个topology的所

  |       |                    有的task的心跳信息

  |       |

  |       |-/{task-id}      -- task的心跳信息,包括心跳的时

  |                            间,task运行时间以及一些统计

  |                            信息

  |

  |-/taskerrors             -- 所有task所产生的error信息

      |

      |-/{topology-id}      -- 这个目录保存这个topology下面

          |                    每个task的出错信息

          |

          |-/{task-id}      -- 这个task的出错信息

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值