所有安装包都放在home/user1/strom下 /
配置七台主机:1台nimbus主节点、3台supervisor工作节点、3台zookeeper集群节点。注意,ip地址参考自己主机分配的修改
终端执行 ifconfig 查询ip
主机名(节点) | IP地址 | 内存(GB) | VCPU (个) | 硬盘(GB) | 节点运行进程 |
Nimbus | 192.168.0.124 | 1 | 2 | 20 | Nimbus、DRPC |
Supervisor1 | 192.168.0.145 | 1 | 2 | 20 | Supervisor、Worker |
Supervisor2 | 192.168.0.146 | 1 | 2 | 20 | Supervisor、Worker |
Supervisor3 | 192.168.0.150 | 1 | 2 | 20 | Supervisor、Worker |
Zookeeper1 | 192.168.0.147 | 1 | 2 | 20 | Leader/Follower |
Zookeeper2 | 192.168.0.149 | 1 | 2 | 20 | Follower/ Leader |
Zookeeper3 | 192.168.0.152 | 1 | 2 | 20 | Follower/ Leader(zookeeper集群中只有一个Leader) |
克隆七台主机,修改每台主机的主机名、hosts文件,为每台主机配置静态IP地址、设置SSH免秘钥登录,
(1) 修改主机名字
七台分别为:nimbus、supervisor1~supervisor3、zookeeper1~zookeeper3。
hostname //查看主机名
sudo vi /etc/hostname
linux vi操作:x 删除原来的主机名, 点insert 输入新主机名, esc 之后,:wq
保存之后退出
修改完之后需要注销,否则hosts文件无法打开
(2) 配置hosts
sudo gedit /etc/hosts
127.0.0.1 localhost
#127.0.1.1 nimbus
192.168.0.124 nimbus
192.168.0.145 supervisor1
192.168.0.146 supervisor2
192.168.0.150 supervisor3
192.168.0.147 zookeeper1
192.168.0.149 zookeeper2
192.168.0.152 zookeeper3
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhostip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
注意不要忘了第二行的#,注释掉一个地址
1、安装JDK
下载jdk1.8.0_151压缩包到虚拟机的/home/user1/storm文件夹下
jdk下载官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
在终端运行以下命令
cd storm //进入存放jdk压缩包的文件夹
tar zxf jdk-8u151-linux-x64.tar.gz
sudo gedit /etc/profile //打开并编辑profile文件
#文件部分内容:
if [ -d /etc/profile.d ]; then
for i in/etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
#需要添加部分
# Java Environment Path(注意修改自己的路径和jdk版本)
export JAVA_HOME=/home/user1/storm/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
unset i
fi
source /etc/profile //使/etc/profile文件生效
最后,在终端使用java –version命令测试Java是否可以正常运行,如输出JDK的版本信息,则安装成功。
2、Zookeeper介绍及安装部署
(1)配置zk节点的hosts文件:配置3台机器的ip地址和主机名的对应关系:克隆主机时已经配置过了,此步可以省略
(2)解压安装配置第一台zk
tar zxf zookeeper-3.4.11.tar.gz
cd zookeeper-3.4.11
创建快照日志存放目录:
mkdir -p dataDir
创建事务日志存放目录:
mkdir dataLogDir
【注意】:如果不配置dataLogDir,那么事务日志也会写在dataDir目录中。这样会严重影响zk的性能。因为在zk吞吐量很高的时候,产生的事务日志和快照日志太多。
修改配置文件,添加如下内容:
cd conf
mv zoo_sample.cfg zoo.cfg
sudo gedit zoo.cfg
# 存放数据文件
dataDir=/usr/local/zookeeper-3.4.6/dataDir
# 存放日志文件
dataLogDir=/usr/local/zookeeper-3.4.6/dataLogDir
# zookeeper cluster,2888为选举端口,3888为心跳端口
server.1=Zookeeper1:2888:3888
server.2= Zookeeper2:2888:3888
server.3= Zookeeper3:2888:3888
在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字:
cd ..
cd dataDir
touch myid
echo 1 > myid
(3)远程复制第一台的zk到另外两台上,并修改myid文件为2和3(路径名中的user1的1是123的1)
scp -rp zookeeper-3.4.11 user1@192.168.0.149:/home/user1/storm
scp -rp zookeeper-3.4.11 user1@192.168.0.152:/home/user1/storm
4. 启动和关闭zk
在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本,如下所示:(三个都需要启动,切记!!)
cd storm/zookeeper-3.4.11
bin/zkServer.sh start
查看状态bin/zkServer.sh status
在查看状态时可能会出现虽然已经started了,但是status显示的是Error,这里可以查看一下zookeeper-3.4.11文件夹下的zookeeper.out日志文件,上面记录的错误原因。我这里每次重新启动终端时,zookeeper都会报错
错误原因是 nohup: 无法运行命令'java': 没有那个文件或目录
解决方法:每次都要执行source /etc/profile,使环境变量生效.....(很无语,不知道为什么要这样)
关闭zookeeper服务
bin/zkServer.sh stop
5. 脚本定期清理zk快照和日志文件
正常运行过程中,ZK会不断地把快照数据和事务日志输出到dataDir和dataLogDir这两个目录,并且如果没有人为操作的话,ZK自己是不会清理这些文件的。 我这里采用脚本切割。
cd /user1/storm/zookeeper-3.4.11/
sudo gedit clean_zklog.sh //这里我是直接在目录下新建文件再复制粘贴上的~(用命令写有可能会被限制权限)
#!/bin/bash
#Description:This script is used to clear zookeeper snapshot file and transaction logs.
# Snapshot file dir.
dataDir=/user1/storm/zookeeper-3.4.11/dataDir/version-2
# Transaction logs dir.
dataLogDir=/user/storm/zookeeper-3.4.11/dataLogDir/version-2
#Leave 3 files
count=3
count=$[$count+1]
ls -t $dataLogDir/log.* | tail -n +$count | xargs rm -f
ls -t $dataDir/snapshot.* | tail -n +$count | xargs rm -f
每个Zookeeper集群节点配置周期性任务,每个星期日的0点0分执行:
crontab -e
0 0 * * 0 /usr/local/zookeeper-3.4.6/clean_zklog.sh
3、 安装Storm依赖库
安装m4 libtool automake autoconf libsodium
在安装这两个组件之前,我强烈建议你检查一下你是否已经安装了上面这写组件,因为他们会在安装ZeroMQ和JZMQ时用到,如果你不想在后续安装的时候频繁的被打断,那就索性先一股脑的安装了吧。网上有一些安装教程使用:
wget http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz
的方式安装,我不建议使用这种方法,因为这样安装到的版本比较低,所以我推荐大家到它们的官网上去下载最新的安装包。
下载地址:http://ftp.gnu.org/gnu/m4/
我下载的是:m4-1.4.18.tar.gz
tar -xzvf m4-1.4.18.tar.gz
cd m4-1.4.18
./configure
make
make install
(2)libtool
下载地址:http://mirrors.ustc.edu.cn/gnu/libtool/
我使用的是libtool-2.4.6.tar.gz
tar -xzvf libtool-2.4.6.tar.gz
cd libtool-2.4.6
./configure
make
make install
(3)autoconf
下载地址:http://ftp.gnu.org/gnu/autoconf/
我下载的是:autoconf-2.69.tar.gz
tar -xzvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure
make
make install
(4)automake
下载地址:http://ftp.gnu.org/gnu/automake/
我下载的是:automake-1.15.tar.gz
tar xzvf automake-1.15.tar.gz
cd automake-1.15
./configure
make
make install
(5)libsodium
下载地址:https://github.com/jedisct1/libsodium
我下载的是:libsodium-master.zip
unzip libsodium-master.zip
cd libsodium-master
./autogen.sh
./configure
make && make check
make install
(2)安装ZeroMQ
跟上面打安装步骤类似,先是下载安装包,下载地址:http://download.zeromq.org/
我使用的是最新版本的 zeromq-4.1.4.tar.gz
tar -xzvf zeromq-4.1.4.tar.gz
cd zeromq-4.1.4
./autogen.sh
./configure
make
make install
安装ZeroMQ可能遇到的问题:
一种解决办法是把/usr/share/aclocal/pkg.m4文件拷贝到/usr/share下面其他有版本的aclocal-x.x.x下面
譬如
cp /usr/share/aclocal/pkg.m4 /usr/local/share/aclocal-1.15/
cp /usr/share/aclocal/pkg.m4 /usr/local/share/aclocal/
如果不行的话,确认libsodium库安装成功之后,将zmq的文件删掉,重新编译安装一次
(3)安装JZMQ
下载地址:https://github.com/zeromq/jzmq
直接下载.zip文件就可以了。我使用的是jzmq-master.zip
unzip jzmq-master.zip
unzip jzmq-master.zip
cd jzmq-master
./autogen.sh
./configure
make
make install
在编译的过程中,可能会出现以下问题:
(1)解决方法——执行该命令:
touch src/classdist_noinst.stamp
(2)解决方法:
编译class,命令如下:(如果不能执行javac,先查看一下环境变量是否配好:sudo gedit /etc/profile ,如果配好了则重新source /etc/profile)
cd src/org/zeromq/
javac *.java
4、安装Storm发行版
需要在Nimbus和Supervisor节点上安装Storm发行版
(1)下载Storm-0.10.0
wget http://mirror.bit.edu.cn/apache/storm/apache-storm-0.10.0/apache-storm-0.10.0.tar.gz
(2)解压到安装目录/home/storm
tar –zxvf apache-storm-0.10.0.tar.gz
mv apache-storm-0.10.0 storm-0.10.0 //修改文件名 mv [原文件名] [修改后文件名]
(3) 配置storm.yaml文件
Storm发行版本解压目录下有一个conf/storm.yaml文件,用于配置Storm。conf/storm.yaml中的配置选项将覆盖defaults.yaml中的默认配置。以下配置选项是必须在conf/storm.yaml中进行配置的:
gedit /home/qj/storm/storm-.10.0/conf/storm.yaml
########### These MUST be filled infor a storm configuration
storm.zookeeper.servers:
- "Zookeeper1"
- "Zookeeper2"
- "Zookeeper3"
nimbus.host:"Nimbus"
storm.local.dir:"/home/qj/storm/storm-0.10.0/workdir"
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
# ##### These may optionally befilled in:
#
## List of custom serializations
# topology.kryo.register:
# - org.mycompany.MyType
# - org.mycompany.MyType2:org.mycompany.MyType2Serializer
#
## List of custom kryo decorators
# topology.kryo.decorators:
# - org.mycompany.MyDecorator
#
## Locations of the drpc servers
drpc.servers:
- "Nimbus"
(4) 启动Storm各个守护进程
a、先开启zookeeper服务
b、 然后分别在nimbus节点和supervisor节点开启后台守护进程
① nimbus节点启动:nimbus、drpc、ui
②supervisor节点启动:supervisor
然后,打开浏览器,输入默认的Storm UI 网址(nimbus:8080)。若可以看到Storm UI界面(如下),storm集群安装成功。
至此,Storm-0.10.0集群的安装与部署工作完成!由于后来开七台虚拟机太卡,我就将zookeeper配置在supervisor上,注意zoo.cfg、storm.yaml的正确配置即可!