1.集群部署的基本流程
集群部署的流程:下载安装包、解压安装包、修改配置文件、分发安装包、启动集群
2.集群部署的基础环境准备
安装前的准备工作(zk集群已经部署完毕)
3、Storm集群部署
3.1、下载安装包
3.2、解压安装包并修改属性及权限
tar -zxvf apache-storm-0.9.5.tar.gz -C /usr/local #解压
cd /usr/local
sudo mv apache-storm-0.9.5/ storm/ #修改文件名字
sudo chown -R hadoop:hadoop storm #修改权限
3.3、修改配置文件
cp /usr/local/storm/conf/storm.yaml /usr/local/storm/conf/storm-yaml.bak
vi cp /usr/local/storm/conf/storm.yaml
添加以下内容:
#storm使用的zk集群
storm.zookeeper.servers:
- "Master"
- "node01"
- "node02"
#指定storm集群中的nimbus节点所在的服务器
nimbus.host: "Master"
#指定nimbus启动JVM最大可用内存大小
nimbus.childopts: "-Xmx1024m"
#指定supervisor启动JVM最大可用内存大小
supervisor.childopts: "-Xmx1024m"
#指定supervisor节点上,每个worker启动JVM最大可用内存大小
worker.childopts: "-Xmx768m"
#指定ui启动JVM最大可用内存大小,ui服务一般与nimbus同在一个节点上。
ui.childopts: "-Xmx768m"
#指定supervisor节点上,启动worker时对应的端口号,每个端口对应槽,每个槽位对应一个worker
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
3.4、分发安装包
scp -r /usr/local/storm node01:/usr/local/
scp -r /usr/local/storm node01:/usr/local/
3.5、启动集群
- 在nimbus.host所属的机器上启动 nimbus服务和ui服务
#在nimbus.host所属的机器上启动 nimbus服务
cd /usr/lcoal/storm/bin
nohub ./storm nimbus &
#在nimbus.host所属的机器上启动ui服务
nohup ./storm ui &
2、在其他节点开启supervisor
#在其它节点上启动supervisor服务
cd /usr/local/storm/bin
nohub ./storm supervisor &
3.6、查看集群
访问storm的UI界面:http:localhost:8080,即可看到storm的ui界面。
对上图的介绍:
Cluster Sunmmary:是Storm集群的信息简介
version:storm的版本信息
nimbus uptime :storm启动的时间
sopervisors:supervisor的节点个数
used slots:使用的槽的个数
free slots:剩余槽(work)的个数
Total slots:总共的槽的个数
Exectors:Task的执行器(线程的个数)Task:spout任务和bolt任务。属于每个任务中并发调度中的一个。一个Task本质上是一个线程。线程:Exector
Topology Summary:(拓扑图)
Storm编程模型
- Topology:Storm中运行的一个实时应用程序的名称。(拓扑)
- Spout:在一个topology中获取源数据流的组件。
通常情况下spout会从外部数据源中读取数据,然后转换为topology内部的源数据。
- Bolt:接受数据然后执行处理的组件,用户可以在其中执行自己想要的操作。
- Tuple:一次消息传递的基本单元,理解为一组消息就是一个Tuple。
- Stream:表示数据的流向。
Storm核心组件
- Nimbus:负责资源分配和任务调度。
- Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。---通过配置文件设置当前supervisor上启动多少个worker。
- Worker:运行具体处理组件逻辑的进程。Worker运行的任务类型只有两种,一种是Spout任务,一种是Bolt任务。
- Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,不同spout/bolt的task可能会共享一个物理线程,该线程称为executor。
Supervisor Summary:
supervisor的节点信息:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。---通过配置文件设置当前supervisor上启动多少个worker。
4、Storm常用操作命令
有许多简单且有用的命令可以用来管理拓扑,它们可以提交、杀死、禁用、再平衡拓扑。
- 提交任务命令格式:storm jar 【jar路径】 【拓扑包名.拓扑类名】 【拓扑名称】
bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.6.jar storm.starter.WordCountTopology wordcount
- 杀死任务命令格式:storm kill 【拓扑名称】 -w 10(执行kill命令时可以通过-w [等待秒数]指定拓扑停用以后的等待时间)
storm kill topology-name -w 10
- 停用任务命令格式:storm deactivte 【拓扑名称】
storm deactivte topology-name
我们能够挂起或停用运行中的拓扑。当停用拓扑时,所有已分发的元组都会得到处理,但是spouts的nextTuple方法不会被调用。销毁一个拓扑,可以使用kill命令。它会以一种安全的方式销毁一个拓扑,首先停用拓扑,在等待拓扑消息的时间段内允许拓扑完成当前的数据流。
- 启用任务命令格式:storm activate【拓扑名称】
storm activate topology-name
- 重新部署任务命令格式:storm rebalance 【拓扑名称】
storm rebalance topology-name
再平衡使你重分配集群任务。这是个很强大的命令。比如,你向一个运行中的集群增加了节点。再平衡命令将会停用拓扑,然后在相应超时时间之后重分配工人,并重启拓扑。
5、Storm集群的进程及日志熟悉
5.1、部署成功之后,启动storm集群。
依次启动集群的各种角色
5.2、查看nimbus的日志信息
在nimbus的服务器上
cd /export/servers/storm/logs
tail -100f /export/servers/storm/logs/nimbus.log
5.3、查看ui运行日志信息
在ui的服务器上,一般和nimbus一个服务器
cd /export/servers/storm/logs
tail -100f /export/servers/storm/logs/ui.log
5.4、查看supervisor运行日志信息
在supervisor服务上
cd /export/servers/storm/logs
tail -100f /export/servers/storm/logs/supervisor.log
5.5、查看supervisor上worker运行日志信息
在supervisor服务上
cd /export/servers/storm/logs
tail -100f /export/servers/storm/logs/worker-6702.log
(该worker正在运行wordcount程序)
6、Storm源码下载及目录熟悉
6.1、在Storm官方网站上寻找源码地址
http://storm.apache.org/downloads.html
6.2、点击文字标签进入github
点击Apache/storm文字标签,进入github
https://github.com/apache/storm
6.3、拷贝storm源码地址
在网页右侧,拷贝storm源码地址
6.4、使用Subversion客户端下载
https://github.com/apache/storm/tags/v0.9.5
6.5、Storm源码目录分析(重要)
扩展包中的三个项目,使storm能与hbase、hdfs、kafka交互