本文环境如下:
操作系统:CentOS 6 32位
ZooKeeper版本:3.4.8
Storm版本:1.0.0
JDK版本:1.8.0_77 32位
python版本:2.6.6
集群情况:一个主控节点(Master)和两个工作节点(Slave1,Slave2)
1. 搭建Zookeeper集群
安装参考:CentOS下ZooKeeper单机模式、集群模式安装
2. 在Nimbus和worker机器上安装依赖包
Java 6
Python 2.6.6
以上的版本是官方说已经有测试可以和Strom正常运行的版本,本文采用Java 8进行安装。
由于CentOS 6已经自带Python 2.6.6,这边就不介绍安装方法了。可以采用python --version
来检查服务器是否安装python,以及对应的版本。
3. 下载解压最新版的Storm
打开官网下载页面:http://storm.apache.org/downloads.html
选择适合的版本进行下载。
wget "http://apache.opencas.org/storm/apache-storm-1.0.0/apache-storm-1.0.0.tar.gz"
tar -xzvf apache-storm-1.0.0.tar.gz
mv apache-storm-1.0.0 /opt
4. 修改配置文件
打开核心配置文件:storm.yaml
cd /opt/apache-storm-1.0.0/conf
vi storm.yaml
至少完成以下3处的配置,笔者的配置文件:
storm.zookeeper.servers:
- "master"
- "slave1"
- "slave2"
storm.local.dir: "/opt/apache-storm-1.0.0/data"
nimbus.seeds: ["master"]
其中storm.zookeeper.servers
,表示Zookeeper集群地址。如果Zookeeper集群使用的不是默认端口,那么还需要配置storm.zookeeper.port。storm.local.dir
用于配置Storm存储少量文件的路径。nimbus.seeds
用于配置主控节点的地址,可以配置多个。
5. 拷贝文件到其余主控节点和工作节点
scp -r apache-storm-1.0.0 root@slave1:/opt
scp -r apache-storm-1.0.0 root@slave2:/opt
6. 启动Storm
Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node)。其分别对应的角色如下:
主控节点(Master Node)上运行一个被称为Nimbus的后台程序,它负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态。
每个工作节点(Work Node)上运行一个被称为Supervisor的后台程序。Supervisor负责监听从Nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程。每一个工作进程执行一个Topology的子集;一个运行中的Topology由分布在不同工作节点上的多个工作进程组成。
6.1 启动主控节点
/opt/apache-storm-1.0.0/bin/storm nimbus
6.2 启动工作节点
/opt/apache-storm-1.0.0/bin/storm supervisor
6.3 启动管理页面
在主控节点上运行
/opt/apache-storm-1.0.0/bin/storm ui
说明:需要分别到每个节点启动服务。管理界面将运行在启动它的服务器的8080端口,日志文件在程序目录中logs文件夹下。上面的启动方式是在前台运行的,如果需要在后台运行,可以使用类似nohup /opt/apache-storm-1.0.0/bin/storm nimbus &
的方式运行。