一、前提:
(1)storm服务,是基于zookeeper的。
(2)storm使用稳定版本:apache-storm-1.2.1.tar.gz;
(3)可在master上安装后,scp到其他slave机器上。
(4)Storm需要安装依赖库:JDK7+、Python2.6.6(如不需要运行Python程序,可不安装)
二、配置storm:
首先要注意在生产环境中目录结构要定义好,防止在项目过多的时候找不到所需的项目
- 目录统一放在/home下面 ,首先创建storm项目目录
cd /home
#创建项目目录
mkdir storm
cd /home/storm
#创建数据存放目录
mkdir stormdata
- 将 apache-storm-1.2.1.tar.gz 放在 /home/storm下,并解压缩,解压缩完成后可删除安装包:
#解压缩
tar -zxvf apache-storm-1.2.1.tar.gz
#完成后可删除
rm -f apache-storm-1.2.1.tar.gz
- 修改配置文件
(1)环境变量配置:
为方便以后操作,在/etc/profile文件中主要增加的内容是:
export STORM_HOME=/home/storm/apache-storm-1.2.1
PATH中增加:
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${HBASE_HOME}:${ZK_HOME}/bin:${STORM_HOME}/bin:$PATH
执行命令生效
source /etc/profile
(2)修改/home/storm/apache-storm-1.2.1/conf/ 中的storm.yaml配置文件:
1)storm.zookeeper.servers: Storm集群使用的Zookeeper集群地址,其格式如下:
storm.zookeeper.servers:
- "master"
- "slave1"
- "slave2"
- "slave3"
2)storm.local.dir: Nimbus和Supervisor进程用于存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限。
storm.local.dir: "/home/storm/data"
3)nimbus.seeds: Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologies的jars、confs等文件,如:
nimbus.seeds: ["master"]
4)supervisor.slots.ports: 对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口,如:
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
注意:每行前面的空格要统一,否则启动不起来。
- 将安装配置好的storm目录复制到所有slave节点中:
scp -r /home/storm/ root@slave1:/home/
scp /etc/profile root@slave1:/etc/
scp -r /home/storm/ root@slave2:/home/
scp /etc/profile root@slave2:/etc/
scp -r /home/storm/ root@slave3:/home/
scp /etc/profile root@slave3:/etc/
说明:各slave节点,环境变量配置完后,要执行source /etc/profile才能生效。
三、启动storm:
需先启动zookeeper
- master,即在Storm主控节点上运行 "./storm nimbus &" 启动Nimbus后台程序,并放到后台执行启动
cd /home/storm/apache-storm-1.2.1/bin/
./storm nimbus &
- 所有slave ,即在Storm各个工作节点上运行"./storm supervisor &"启动Supervisor后台程序,并放到后台执行;
cd /home/storm/apache-storm-1.2.1/bin/
./storm supervisor &
- master,即在Storm主控节点上运行 "storm ui &" 启动UI后台程序,并放到后台执行,启动后可以通过http://<master.IP>:8080/index.html观察集群的worker资源使用情况、Topologies的运行状态等信息。
至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。
四、补充storm集群启动/停止脚本:
- storm集群启动脚本
在$STORM_HOME/bin下执行
#新建脚本文件并编辑
vi ./start-storm-cluster.sh
#赋予可执行权限
chmod a+x start-storm-cluster.sh
#执行脚本
./start-storm-cluster.sh
脚本文件内容如下:
#!/bin/bash
#nimbus节点
nimbusServers='master'
#supervisor节点
supervisorServers='slave1 slave2 slave3'
#启动所有的nimbus
for nim in $nimbusServers
do
ssh -T $nim <<EOF
source /etc/profile
cd \$STORM_HOME
bin/storm nimbus >/dev/null 2>&1 &
EOF
echo 从节点 $nim 启动nimbus...[ done ]
sleep 1
done
#启动所有的ui
for u in $nimbusServers
do
ssh -T $u <<EOF
source /etc/profile
cd \$STORM_HOME
bin/storm ui >/dev/null 2>&1 &
EOF
echo 从节点 $u 启动ui...[ done ]
sleep 1
done
#启动所有的supervisor
for visor in $supervisorServers
do
ssh -T $visor <<EOF
source /etc/profile
cd \$STORM_HOME
bin/storm supervisor >/dev/null 2>&1 &
EOF
echo 从节点 $visor 启动supervisor...[ done ]
sleep 1
done
- storm集群停止脚本
在$STORM_HOME/bin下执行
#新建脚本文件并编辑
vi ./stop-storm-cluster.sh
#赋予可执行权限
chmod a+x stop-storm-cluster.sh
#执行脚本
./stop-storm-cluster.sh
脚本文件内容如下:
#!/bin/bash
#nimbus节点
nimbusServers='master'
#supervisor节点
supervisorServers='slave1 slave2 slave3'
#停止所有的nimbus和ui
for nim in $nimbusServers
do
echo 从节点 $nim 停止nimbus和ui...[ done ]
ssh $nim "kill -9 `ssh $nim ps -ef | grep nimbus | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
ssh $nim "kill -9 `ssh $nim ps -ef | grep core | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
done
#停止所有的supervisor
for visor in $supervisorServers
do
echo 从节点 $visor 停止supervisor...[ done ]
ssh $visor "kill -9 `ssh $visor ps -ef | grep supervisor | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
done
网友评论