环境要求:如果以下环境你已搭建好,请直接跳过。
1. java环境,如果还没有安装java环境,请点击!
2.zookeeper环境,对于storm集群来讲,单节点的zookeeper已经足够。但要配置zookeeper的高可靠性,必须配置3台以上的奇数台!zookeeper的配置详情请点击
总体架构图:
现在开始storm集群的搭建:
1.安装zeromq(zeromq是storm集群用到的底层的消息队列,其效率相当高)
依赖安装,注意按顺序安装:rpm -ivh libuuid-2.17.2-12.9.el6.x86_64.rpm
rpm -ivh libuuid-devel-2.17.2-12.9.el6.x86_64.rpm
rpm -ivh uuid-1.6.1-10.el6.x86_64.rpm
rpm -ivh uuid-devel-1.6.1-10.el6.x86_64.rpm
针对不同系统版本(我用的是centos6.5 64位)可能还会用到其他依赖,在上面的下载地址中,包含了所有。
2.解压zeromq-2.1.7.tar.gz到/cloud目录
tar -zxvf zeromq-2.1.7.tar.gz -C /cloud
3.进入到zeromq-2.1.7目录,执行如下命令:
./configuremake
make install
4.安装jzmq(jzmq是zeromq的java banding)
解压jzmq-master.zip到指定目录,.zip格式的用到的是unzip命令,-d指定想要解压到的目录
unzip jzmq-master.zip -d /cloud/
cd /cloud/ jzmq-master/
./autogen.sh
./configure
make
make install
5.解压storm-0.8.2.zip
unzip storm-0.8.2.zip -d /cloud
6.修改storm的配置文件
在storm安装目录下的conf目录下(我的是/cloud/storm-0.8.2/conf),修改storm.yaml文件
把 storm.zookeeper.servers、 nimbus.host: 前面的注释(#号)去掉,改为如下:
storm.zookeeper.servers:
- "nimbus"
- "sv1"
- "sv2"
nimbus.host: "nimbus"
其中:
(1)storm.zookeeper.servers是 配置zookeeper的机器的地址,如果你已经在/etc/hosts文件下添加了主机地址和主机名的映射,直接写主机名即可。如果你的zookeeper配置的是单节点,那这里写一个就ok。
(2)nimbus.host: "nimbus"是配置nimbus主机所在位置,其中“nimbus”是我自己配置的主机名。
好了,到这里一台机器上的storm就安装完成了。另外3台supervisor主机的配置,与以上配置步骤相同;
你可以直接通过scp命令把安装目录直接拷贝过去,但是前期的rpm依赖包还是要手动安装的哦。
storm集群的启动
1.启动zookeeper
在zookeeper安装目录下的bin目录下:执行:./zkServer.sh start
2.启动nimbus
在你配置的nimbus主机下的storm安装目录下的bin目录下:执行:
./storm nimbus >/dev/null 2>&1 &(将标准输出和标准错误信息打印到/dev/null,并让程序以后台进程启动)3.启动supervisor
在你配置的每一个supervisor主机下的storm安装目录下的bin目录下:执行:
4.在主节点(nimbus主机)上启动 ui
./storm ui >/dev/null 2>&1 & (ui是storm集群的网页监控,启动后可以通过浏览器查看)
浏览器查看:http://192.168.1.110:8080(这里是主节点即nimbus主机的ip,端口号默认是8080)
Storm集群运行中常见问题解决:
1.supervisor启动不起来
那很可能是因为机器突然掉电、或者你使用暴力的方式杀掉来supervisor进程,导致在$STORM_HOME/bin/storm-local 目录中的文件冲突;
这时候把storm-local目录删掉,再从新启动supervisor即可。
2.正确关闭正在运行的作业(在storm中称作Topology,拓扑)的方法:
在nimbus节点下,在$STORM_HOME/bin/ 目录下执行 ./storm kill Topology_name(拓扑名,即作业名) ;当然如果你忘了Topology_name,可以在此目录下执行./storm list 命令来列出当前正在运行的所有Topology;
注:如果你没有通过正确的方式关闭Topology,那么nimbus再次启动时,会重新把Topology分配给supervisor的。再次证明了Storm实时计算、高可靠的强大特性;当你不小心杀掉了supervisor,其上的worker会被nimbus转移到其他supervisor上继续执行。