转自:http://xumingming.sinaapp.com/466/twitter-storm-code-analysis-zookeeper-dirs/

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

Storm zk目录结构相关推荐

  1. 【ClickHouse系列】ClickHouse之zk目录结构说明

    zk目录结构 ClickHouse配置信息 创建基于zk的ClickHouse集群(3zk-2shards-2replicas),主要信息如下: <?xml version="1.0& ...

  2. storm目录结构及在zk中的目录结构

    storm目录结构及在zk中的目录结构 @(STORM)[storm] storm目录结构及在zk中的目录结构 一storm在磁盘中的内容 一nimbus中的目录结构 1inbox目录 2stormd ...

  3. Zookeeper的目录结构

    目录结构 目录说明 Bin 主要的一些执行命令 Conf 存放配置文件,需要修改zk.cfg Contrib 附加的一些功能 Dist-maven Mvn编译后的目录 Docs 文档 Lib 需要依赖 ...

  4. Android Studio目录结构和Gradle构建Android项目

    一,Android Studio的目录结构和工程项目介绍 二,Eclipse工程与Android Studio工程的区别 1,Eclipse工程能导入AS运行,但AS建立的工程不能再Eclipse中运 ...

  5. Hadoop——(Hadoop框架,Hadoop的优缺点,Hadoop1.x和2.x的版本区别,Hadoop架构,Hadoop目录结构)

    文章目录 大数据的简介 Hadoop框架 Hadoop的优缺点 Hadoop1.x和2.x的版本区别 Hadoop架构 Hadoop目录结构 正常工作的Hadoop集群中Hadoop都分别需要启动哪些 ...

  6. Hadoop入门(上):大数据特点、大数据前景、大数据组织结构、Hadoop组成、Hadoop版本介绍、Hadoop运行环境搭建、CentOS6安装JDK、安装Hadoop、Hadoop目录结构

    资料来源于尚硅谷 本篇文章目录 第1章·大数据概论 1.1.大数据概念. 1.2.大数据特点(4V) 1.3.大数据应用场景 1.4.大数据发展前景 1.5·大数据部门业务流程分析. 1.6·大数据部 ...

  7. Go 学习笔记(84)— Go 项目目录结构

    1. 目录规范 一个好的目录结构至少要满足以下几个要求. 命名清晰:目录命名要清晰.简洁,不要太长,也不要太短,目录名要能清晰地表达出该目录实现的功能,并且目录名最好用单数.一方面是因为单数足以说明这 ...

  8. Udacity机器人软件工程师课程笔记(九)-ROS-Catkin包、工作空间和目录结构

    Catkin包和工作空间 1.Carkin包简介 Catkin是ROS的官方构建系统,也是原始ROS构建系统rosbuild的继承者.catkin结合了CMake宏和Python脚本,在CMake的正 ...

  9. Platform Builder 5下WinCE 5.0目录结构

    Platform Builder 5下WinCE 5.0目录结构 Platform Builder 5已经自带WinCE 5.0,安装过程会指定WinCE 5.0的安装路径,默认为X:\WINCE50 ...

最新文章

  1. Design Pattern - Adapter Pattern
  2. nginx 安装 虚拟主机
  3. android标题背景色,设置标题背景颜色
  4. 国货之光业务增长背后的技术支持 - 完美日记的云原生实践
  5. 程序员的日常竟然是这样,真的是又心疼又好笑······
  6. 并发编程之——多进程
  7. Golang实践录:调用C++函数
  8. Hive常用正则表达式
  9. Echars 如何描绘世界地图
  10. linux库文件编译的makefile
  11. 统计学_显著性检验综述
  12. 教你用GoldWave剪裁音频作短视频BGM
  13. 【数据挖掘】XGBoost面试题:与GBDT的区别?为什么使用泰勒二阶展开?为什么可以并行训练?为什么快?防止过拟合的方法?如何处理缺失值?
  14. 华为freelace耳机修整详录
  15. java retry: 详解
  16. 深入理解Linux内核页表映射分页机制原理
  17. Python scrapy框架快速入门
  18. Extremely hard RSA 低加密指数攻击
  19. Oracle AWR报告指标全解析
  20. golang 官方依赖管理工具 dep 使用和持续集成

热门文章

  1. 瘦马- 《男人装》创办人、《时尚江湖》主讲人 | 到「在行」来约见我
  2. Python基础之系统常用模块
  3. 互联网面试知识点总结(算法,后端)
  4. Linux学习-MySQL之SQL语句(二)
  5. vue Render scopedSlots
  6. Redis的删除策略,删除我是认真的
  7. 5.10杂谈正能量日记
  8. python画卡通人物_用Python 绘制儿童卡通人物,一起过儿童节
  9. Linux CentOS 8中Docker的安装与卸载
  10. Mastercam程序单制作视频教程