JStorm集群的安装和使用
0 JStorm概述
JStorm是一个分布式的实时计算引擎。从应用的角度,JStorm应用是一种遵守某种编程规范的分布式应用;从系统角度, JStorm是一套类似MapReduce的调度系统; 从数据的角度,JStorm是一套基于流水线的消息处理机制。
详情见:JStorm概叙及应用场景
1 JStorm集群组件
Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node)。其分别对应的角色如下:
- 主控节点(Master Node)上运行一个被称为Nimbus的后台程序,Nimbus的作用类似于Hadoop中JobTracker的角色。Nimbus负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态。
- 每个工作节点(Work Node)上运行一个被称为Supervisor的后台程序,Supervisor类似于Hadoop中的TaskTracker。Supervisor负责监听从Nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程。每一个工作进程执行一个Topology的子集;一个运行中的Topology由分布在不同工作节点上的多个工作进程组成。
Nimbus和Supervisor节点之间所有的协调工作是通过Zookeeper集群来实现的。
Nimbus和Supervisor进程都是快速失败(fail-fast)和无状态(stateless)的;Storm集群不在进程内保存状态,所有的状态要么在Zookeeper集群中,要么存储在本地磁盘上。这意味着你可以在任意时刻用kill -9来杀死Nimbus和Supervisor进程,它们在重启后可以继续工作,运行中的Topologies不会受到影响。
2 JStorm集群架构
2.1 架构
参考资料:https://github.com/alibaba/jstorm/wiki/JStorm%E6%9E%B6%E6%9E%84
2.2 相关术语
Nimbus
Supervisor、Worker(进程)、Task(线程)、Topology(Spout、Bolt)、Tupple
详情可参看:5分钟了解JStorm基础概念
3 JStorm集群安装
3.1 安装Zookeeper集群
3.2 安装JStorm
需要在各节点上安装JStorm,这里以jstorm-0.9.6.3为例,下载并解压,进入jstorm-0.9.6.3
3.2.1 配置环境变量
编辑/etc/profile,加入如下内容:
export JAVA_HOME=/usr/jdk/jdk1..0_45
export PATH=$JAVA_HOME/bin:$PATH
export JSTORM_HOME=/usr/local/jstorm/jstorm-0.9.6.3/
export PATH=$JSTORM_HOME/bin:$PATH//将JSTORM加入构建路径是为了方便提交拓扑,也可以不配置而是直接在bin下执行 storm 命令(还有个bin/start.sh,不过该命令运行时有问题,所以没用之)
接着执行: source /etc/profile ,上述环境变量对机器上的所有用户有效
3.2.2 修改conf/storm.yaml
- storm.zookeeper.servers: JStorm集群所用的Zookeeper集群的地址(不要包含端口,否则会启动失败。端口通过storm.zookeeper.port配置)
storm.zookeeper.servers:
- "192.168.6.131"
- "192.168.6.132"
- "192.168.6.133" - storm.zookeeper.port:JStorm所用的Zookeeper的端口,默认为2181。如果不使用默认端口,可以配此项
- storm.zookeeper.root: JStorm在Zookeeper中的根目录,默认为“/jstorm”(不用事先在Zookeeper创建)。当多个JStorm集群共享一个Zookeeper时,需要设置不同值
- nimbus.host: Nimbus节点的地址,以便下载Topologies的jars、confs等文件。//也可不指定,启动nimbus节点后由于与Zookeeper交互会知道是哪个
- storm.local.dir: Nimbus和Supervisor进程用于存储少量状态数据,如jars、confs等的本地磁盘目录,需要保证JStorm程序对该目录有写权限
storm.local.dir: "%JSTORM_HOME%/../jstorm_data"
- java.library.path: Zeromq 和java zeromq library的安装目录,默认"/usr/local/lib:/opt/local/lib:/usr/lib",默认即可
- supervisor.slots.ports:配置该Supervisor节点运行的Woker能使用哪些端口,每个worker独占一端口用于接收消息,因此也定义了可运行的Woker数量
supervisor.slots.ports:
-
-
-
-
-
-
-
-
3.2.3 启动/停止
和Zookeeper一样,JStorm也是快速失败(fail-fast)的系统,这样Storm才能在任意时刻被停止,并且当进程重启后被正确地恢复执行。这也是为什么JStorm不在进程内保存状态的原因,即使Nimbus或Supervisors被重启,运行中的Topologies不会受到影响。
确定哪些节点要作为Nimbus节点,哪些作为Supervisors节点(一个节点可以同时是Nimbus、Supervisor节点),分别启动:
- 守护进程方式启动Nimbus: bin/jstorm nimbus > /dev/null >& & ,检查logs/nimbus.log看有无错误
- 守护进程方式启动Supervisor: bin/jstorm supervisor > /dev/null >& & , 检查logs/supervisor.log看有无错误
- 停止:可以直接kill Nimbus和Supervisor。(如果有拓扑正在运行则会有worker进程,先kill掉拓扑这样woker进程就会结束)
4 提交拓扑
在一个节点执行以下命令:[注意配置JSTorm环境变量以便于执行jstorm命令]
- 提交拓扑命令: jstorm jar jar程序 拓扑入口 拓扑名
- kill 拓扑命令: jstorm kill 拓扑名 秒数
(拓扑入口一般就是main函数所在类;拓扑名是自取的名字;未指定秒数的话会完成所有清除工作后再结束)
其他jstorm命令可以参见:Command-line-client
5 JStorm UI
JStorm UI用来监控整个JStorm集群的节点及拓扑运行情况。它就是一个war包,因此可以放在任何有Tomcat的机器上。安装方法很简单,如下:
- 把storm.yaml复制到tomcat所在机器的~/.jstorm/storm.yaml。(JStorm UI程序启动时读该配置文件。通过配置storm.yaml的ui.clusters可以使一个jstorm ui管理多个JStorm集群)
- 将安装包置于Tomcat:把$JSTORM_HOME/jstorm-ui-0.9.6.3.war复制到webapps下并mv ROOT ROOT.old;ln -s jstorm-ui-0.9.6.3 ROOT
运行Tomcat后就可以在浏览器访问JStorm UI了,如http://192.168.6.134:8080/,如:(图中的Ports就跟上面说的supervisor.slots.ports的数量有关)
5 参考资料
- http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html(JStorm安装)
- http://pan.baidu.com/s/1bHamHg(JStorm集群安装文档)
- http://blog.csdn.net/xiaolang85/article/details/38492277(JStorm常见问题及解决方案)
- https://github.com/techdocscn/storm/blob/master/source/documentation/Command-line-client.md(JStorm命令)
JStorm集群的安装和使用的更多相关文章
- 分布式实时日志系统(一)环境搭建之 Jstorm 集群搭建过程/Jstorm集群一键安装部署
最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...
- JStorm集群的部署
JStorm是一个类似Hadoop MapReduce的系统,不同的是JStorm是一套基于流水线的消息处理机制,是阿里基于Storm优化的版本,和Storm一样是一个分布式实时计算的系统,从开发角度 ...
- jstorm集群部署
jstorm集群部署下载 Install JStorm Take jstorm-0.9.6.zip as an example unzip jstorm-0.9.6.1.zip vi ~/.bashr ...
- Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!)
Hadoop集群搭建安装过程(三)(图文详解---尽情点击!!!) 一.JDK的安装 安装位置都在同一位置(/usr/tools/jdk1.8.0_73) jdk的安装在克隆三台机器的时候可以提前安装 ...
- Hadoop集群搭建安装过程(二)(图文详解---尽情点击!!!)
Hadoop集群搭建安装过程(二)(配置SSH免密登录)(图文详解---尽情点击!!!) 一.配置ssh无密码访问 ®生成公钥密钥对 1.在每个节点上分别执行: ssh-keygen -t rsa(一 ...
- Storm集群的安装配置
Storm集群的安装分为以下几步: 1.首先保证Zookeeper集群服务的正常运行以及必要组件的正确安装 2.释放压缩包 3.修改storm.yaml添加集群配置信息 4.使用storm脚本启动相应 ...
- Ganglia监控Hadoop集群的安装部署[转]
Ganglia监控Hadoop集群的安装部署 一. 安装环境 Ubuntu server 12.04 安装gmetad的机器:192.168.52.105 安装gmond的机 器:192.168.52 ...
- ElasticSearch和Kibana 5.X集群的安装
ElasticSearch和Kibana 5.X集群的安装 1.准备工作 1.1.下载安装包 1.2.系统的准备 2.ElasticSearch集群的安装 2.1.修改 config/elastics ...
- Redis 集群的安装
Redis 集群介绍.特性.规范等Redis 集群的安装(Redis3.0.3 + CentOS6.6_x64)要让 Redis3.0 集群正常工作至少需要 3 个 Master 节点,要想实现高可用 ...
随机推荐
- 模块(modue)的概念:
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很 ...
- Swift开发小技巧--扫描二维码,二维码的描边与锁定,设置扫描范围,二维码的生成(高清,无码,你懂得!)
二维码的扫描,二维码的锁定与描边,二维码的扫描范围,二维码的生成(高清,无码,你懂得!),识别相册中的二维码 扫描二维码用到的三个重要对象的关系,如图: 1.懒加载各种类 // MARK: - 懒加载 ...
- thinkphp全站静态页实现方法
1:在根目录下的全局index.php中加下面这行: define('HTML_PATH', './htm');//生成静态页面的文件位置 2:在项目的配置文件config.php中加下面这行: 'H ...
- java-汉字转化拼音(纯java)
1.转换所有的拼音 import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Set; public cl ...
- 自定义多列排序:C++/Java实现
前言: 有些时候,我们在编程中会遇到多列排序的需求.假如在execle,这事儿就太easy了.不过没办法,现在就需要你用Java或者C++实现这样一个功能! 比如将下表无序的数据通过重排之后按照以下规 ...
- c# 百度api语音识别
public static string getStrAccess(string para_API_key, string para_API_secret_key) { //方法参数说明: //par ...
- Spark 学习笔记1 (常见术语 )
本来没打算学Spark 的,不过时机很逗. 最膜拜的大神做spark分享,还是其中最好玩的notebook.这不就是另外一个 HUE吗,但感觉更好玩. 刚好新的Spark 2.x 要问世了,大神在组织 ...
- 【BZOJ-1568】Blue Mary开公司 李超线段树 (标记永久化)
1568: [JSOI2008]Blue Mary开公司 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 557 Solved: 192[Submit ...
- komodo,mysql workBeach
跨平台的好软件,只不过自己的眼界太狭隘 Ubuntu下PPA安装,打开终端输入命令: sudo add-apt-repository ppa:mystic-mirage/komodo-edit ...
- IDEA:Idea注册
注册码查找: http://idea.lanyus.com ,然后点击 OK