构建大数据平台(七)Storm集群搭建

一、前提:

(1)storm服务,是基于zookeeper的。

(2)storm使用稳定版本:apache-storm-1.2.1.tar.gz;

(3)可在master上安装后,scp到其他slave机器上。

(4)Storm需要安装依赖库:JDK7+、Python2.6.6(如不需要运行Python程序,可不安装)

二、配置storm:

首先要注意在生产环境中目录结构要定义好,防止在项目过多的时候找不到所需的项目

  1. 目录统一放在/home下面 ,首先创建storm项目目录
cd /home

#创建项目目录
mkdir storm
cd /home/storm

#创建数据存放目录
mkdir stormdata
  1. 将 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. 修改配置文件

(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

注意:每行前面的空格要统一,否则启动不起来。

  1. 将安装配置好的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

  1. master,即在Storm主控节点上运行 "./storm nimbus &" 启动Nimbus后台程序,并放到后台执行启动
cd /home/storm/apache-storm-1.2.1/bin/
./storm nimbus &
  1. 所有slave ,即在Storm各个工作节点上运行"./storm supervisor &"启动Supervisor后台程序,并放到后台执行;
cd /home/storm/apache-storm-1.2.1/bin/
./storm supervisor &
  1. master,即在Storm主控节点上运行 "storm ui &" 启动UI后台程序,并放到后台执行,启动后可以通过http://:8080/index.html观察集群的worker资源使用情况、Topologies的运行状态等信息。

至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。

四、补充storm集群启动/停止脚本:

  1. 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 </dev/null 2>&1 &
EOF
echo 从节点 $nim 启动nimbus...[ done ]
sleep 1
done

#启动所有的ui
for u in $nimbusServers
do
    ssh -T $u </dev/null 2>&1 &
EOF
echo 从节点 $u 启动ui...[ done ]
sleep 1
done

#启动所有的supervisor
for visor in $supervisorServers
do
    ssh -T $visor </dev/null 2>&1 &
EOF
echo 从节点 $visor 启动supervisor...[ done ]
sleep 1
done
  1. 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

你可能感兴趣的:(构建大数据平台(七)Storm集群搭建)