Twitter Storm源代码分析之ZooKeeper中的目录结构
徐明明博客:Twitter Storm源代码分析之ZooKeeper中的目录结构
我们知道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, 代码里面还没有改过来。
直接看下面的结构图:
/-{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的出错信息
Twitter Storm源代码分析之ZooKeeper中的目录结构的更多相关文章
- Twitter Storm源代码分析之Nimbus/Supervisor本地目录结构
storm集群里面工作机器分为两种一种是nimbus, 一种是supervisor, 他们通过zookeeper来进行交互,nimbus通过zookeeper来发布一些指令,supervisor去读z ...
- Storm入门(十一)Twitter Storm源代码分析之CoordinatedBolt
作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://xumingming.sinaapp.com/811/twitter-stor ...
- IntelliJ和tomcat中的目录结构
IntelliJ和tomcat中的目录结构 IntelliJ的官网帮助中心:http://www.jetbrains.com/idea/webhelp/getting-help.html pr ...
- Flask【第11篇】:整合Flask中的目录结构
整合Flask中的目录结构 一.SQLAlchemy-Utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法 import ...
- Storm在zookeeper上的目录结构
storm操作zookeeper的主要函数都定义在命名空间backtype.storm.cluster中(即cluster.clj文件中). backtype.storm.cluster定义了两个重要 ...
- kafka笔记-Kafka在zookeeper中的存储结构【转】
参考链接:apache kafka系列之在zookeeper中存储结构 http://blog.csdn.net/lizhitao/article/details/23744675 1.topic注 ...
- kafka在zookeeper中的存储结构
参考site:http://kafka.apache.org/documentation.html#impl_zookeeper 1.zookeeper客户端相关命令 在确保zookeeper服务启动 ...
- MySQL 5.7 源码中的目录结构
MySQl Server的源码可以直接去Github浏览. 这里我们选择5.7版本的:https://github.com/mysql/mysql-server/tree/5.7 也可以通过: git ...
- 浅谈android中的目录结构
之前在android游戏开发中就遇到本地数据存储的问题:一般情形之下就将动态数据写入SD中存储,在没有SD卡的手机上就需另作处理了;再有在开发android应用的过程中,总要去调试APP,安装时又想去 ...
随机推荐
- C#命名规范的几点建议
1.最好以<Company>.<Component>做为namespace的格式 2.考虑是否需要将namespace设置为复数,如:FCL中的System.Collectio ...
- hdu 2020
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2020 思路:优先队列水过priority_queue #include <cstdio> ...
- 三、jQuery--jQuery插件--jQuery插件——Validation Plugin
简介: 客户端验证:现代网站填写表单时,几乎一定会采用的方式. 优点:1.可以减少服务器压力 2.缩短用户等待时间和提升用户体验 jQuery有很多表单验证插件:https://plugins.jqu ...
- 《C#本质论》读书笔记(12)委托和Lambda表达式
12.1.委托概述 12.1.2 委托的数据类型 为了减少重复代码数量,可以将比较方法作为参数传递给 BubbleSort()方法.此外,为了将方法作为参数传递,必须有一个能够标识方法的数据类型--也 ...
- 比较各大挪动门户网站淘宝、京东、网易、新浪、腾讯meta标签的异同
首先先展示一下各个网站的有关meta标签的代码: 网易 <meta charset="UTF-8"> <meta content="width=devi ...
- Delphi开发中各种文件扩展名代表什么文件
暂时就遇到了以下这几种,以后遇到再进行补充 .DPR Delphi Project文件,打开这个文件,就会打开所有的编程的代码文件.包含了Pascal代码 .PAS Pascal文件,Pascal单元 ...
- 安装oracle 12c RAC遇到的一些问题
(1) 安装grid软件,停止在38%很长时间不动,日志显示正常 解决方法: 由于是虚拟机安装,设置的内存为600M,关闭虚拟机,把内存调成1GB,问题解决~在38%Linking RMAN Ut ...
- linux命令执行返回值(附错误对照表)
转自:http://blog.sina.com.cn/s/blog_6739945f0100zt4b.html 在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序在结 ...
- 湖南省第十二届大学生计算机程序设计竞赛 G Parenthesis
1809: Parenthesis Description Bobo has a balanced parenthesis sequence P=p1 p2…pn of length n and q ...
- r0遍历系统进程方法总结
方法1: ZwQuerySystemInformation 这个方法网上一搜一大堆,不举例了 方法2:暴力枚举PID枚举进程,代码: NTSTATUS DriverEntry(PDRIVER_OBJE ...