环境:zookeeper-3.4.10,ubuntu-16.0.4,jdk1.8.0_111
我这里在四台机器上安装,分别是Desktop(Master),Server1,(Slave1),Server2(Slave2),Server3(Slave3)
可以将Storm中的nimbus看作是Hadoop中的Master,将supervisor看作是Slave。
安装Storm之前,需要先安装zookeeper,点击这里查看zookeeper安装教程
1.解压
将storm解压到指定目录:
zhang@Desktop:~$ tar -zxvf apache-storm-1.2.2.tar.gz -C /usr/local
2.修改配置文件
修改conf目录中的storm.yaml文件:
storm.local.dir: "/usr/local/apache-storm-1.2.2/localdir"
storm.zookeeper.port: 2181
storm.zookeeper.servers:
- "Desktop"
- "Server1"
- "Server2"
- "Server3"
nimbus.seeds: ["Desktop"]
ui.host: 0.0.0.0
ui.port: 8080
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
在设置参数时,不要使用制表符代替空格。
3.新建目录
mkdir -p /usr/local/apache-storm-1.2.2/localdir
4.分发文件
zhang@Desktop:/usr/local$ scp -r ./apache-storm-1.2.2 zhang@Server1:/usr/local
zhang@Desktop:/usr/local$ scp -r ./apache-storm-1.2.2 zhang@Server2:/usr/local
zhang@Desktop:/usr/local$ scp -r ./apache-storm-1.2.2 zhang@Server3:/usr/local
5.添加环境变量
在每个节点的/etc/profile上添加以下内容:
export STORM_HOME=/usr/local/apache-storm-1.2.2
export PATH=${STORM_HOME}/bin:$PATH
每个节点添加完后都执行:source /etc/profile
6.启动storm
先启动zkServer
a)在Desktop(Master)上启动nimbus进程
zhang@Desktop:~$ storm nimbus &
也可以使用:storm nimbus >/dev/null 2>&1 & 该命令下面会有解释
b)在Desktop(Master)上启动UI进程
zhang@Desktop:~$ storm ui &
c)在所有的Slave上启动supervisor进程
zhang@Server1:~$ storm supervisor &
zhang@Server2:~$ storm supervisor &
zhang@Server3:~$ storm supervisor &
7.web登录查看
8.可能遇到的问题
a)web不能正常登录
如果登录web的时候,一直显示loading summary,看不到任何明确的信息。先查看logs目录下的日志,一般是显示超时之类的。这应该是某个进程没有启动成功。对集群中的每个节点使用jps命令查看,看是否有显示config_value,config_value是没有启动成功,对该节点重新启动(不是重启主机,是重启sotrm相关进程)。
如果登录web的时候,网页进不去,看不到内容(连loading summary都看不到),一直在链接,也没有提示超时之类的,换浏览器也不行,对所有节点全部重启(不是重启主机,是重启sotrm相关进程)。
如果kill或者kill -9都杀不掉某个进程,我暂时没有找到解决方法,直接重启主机。
如果登录进去可以看到nimbus或者supervisor等信息,某些信息看不到(一直显示loading summary)。可以换个浏览器试试,用谷歌可以正常显示,用的360就不行,而且360每次都显示loading summary。
以上几个问题是我部署完启动时遇到的问题。
b)nimbus或supervisor不能启动
虽然执行了启动命令但是在命令执行完后进程又退出了。首先查看日志。如果是nimbus不能启动,查看nimbus.log。
一般会有这样的信息:
2018-06-07 10:02:30.982 o.a.s.s.o.a.z.ClientCnxn main-SendThread(Desktop:2181) [INFO] Socket connection established to Desktop/192.168.244.3:2181, initiating session
2018-06-07 10:02:30.986 o.a.s.s.o.a.z.ClientCnxn main-SendThread(Desktop:2181) [INFO] Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection and attempting reconnect
2018-06-07 10:02:31.311 o.a.s.s.o.a.z.ClientCnxn main-SendThread(Desktop:2181) [INFO] Opening socket connection to server Server1/192.168.244.4:2181. Will not attempt to authenticate using SASL (unknown error)
这个是zkServer挂掉了。虽然执行jps可以看到QuorumPeerMain还在,但是实际上zkServer已经挂了。
这个是zkServer存活数只有一半(或小于)配置数引起的。比如zookeeper部署了4台,但是只起了2台,默认zkServer状态就是挂掉了。当再起一台zkServer,即存活数达到3台,超过1半了,就可以查看状态了。也就是说zkServer集群已经运行起来了。
前面的问题也就解释通了,虽然可以看到zkServer进程,但是因为存活数不足,默认zkServer没有运行起来,所以也就无法启动nimbus或者supervisor了。
storm集群启动停止脚本
其他参考:
转载自:关于storm nimbus > /dev/null 2>&1
关于bin/storm nimbus >/dev/null 2>&1 &
bin/storm nimbus >/dev/null 2>&1 &
如图所示:
bin/storm nimbus会有两个输出,一个标准输出,一个错误输出
2>&1的作用是将 2即错误输出 的内容重定向到&1即标准输出中,然后>/dev/null是将两者的结果输入到/dev/null中,相当于抛弃掉。至于最后一个&,因为storm会一直运行,不会自动停掉,页面上就会不停的有内容。&的作用就是将storm拿到后台执行。