当前位置: 代码迷 >> 综合 >> Storm-1.2.2完全分布式安装
  详细解决方案

Storm-1.2.2完全分布式安装

热度:39   发布时间:2024-01-09 19:48:17.0

环境: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拿到后台执行。