前言
还是那句话,刚开始不要非要搭建一个集群环境,在继续往下学习,单机环境下依然可以掌握storm的大部分功能,等我们把storm的知识学的差不多的时候,在研究storm集群也为时不晚呀,搭建集群肯定会遇到各种各样的问题,这会影响你的心情的,继续阅读,请谨慎哈……
一、机器部署规划
1)3台虚拟机
jikeh00 192.168.199.110
jikeh01 192.168.199.233
jikeh02 192.168.199.227
注释:如果你不知道如何模拟搭建3节点的集群系统,请参考这篇文章:
2)Storm组件机器分布
jikeh00: zk nimbus supervisor ui logviewer
jikeh01: zk supervisor logviewer
jikeh02: zk supervisor logviewer
二、基础环境配置修改
1)修改hosts:三个节点上都要修改
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# 主要是下面:按你实际的hostname进行相应修改
192.168.199.110 jikeh00
192.168.199.233 jikeh01
192.168.199.227 jikeh02
2)关闭防火墙:三个节点上都要修改
三、三节点zookeeper集群环境搭建
前提条件:你在三台机器上都搭建了zookeeper的单机环境
如果你不熟悉zookeeper单机环境的搭建,请参考这篇文章:
1)修改zoo.cfg文件
server.1=jikeh00:2888:3888
server.2=jikeh01:2888:3888
server.3=jikeh02:2888:3888
2)新增myid文件
注意:一定要与上面配置文件server.1/2/3对应哈
jikeh00上:
echo "1" > /usr/local/zookeeper-3.4.12/data/myid
jikeh01上:
echo "2" > /usr/local/zookeeper-3.4.12/data/myid
jikeh02上:
echo "3" > /usr/local/zookeeper-3.4.12/data/myid
在每个节点上启动zk: zkServer.sh start
在每个节点上查看当前机器zk的状态: zkServer.sh status
zookeeper集群启动正常的打印信息:
jikeh00:
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
jikeh01:
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader
jikeh02:
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower
注释:
- leader:主节点
- follower:从节点
- 易知,机器jike01为主节点
3)常见问题总结
- 如何查看错误信息呢?
- 在当前目录下查看,zookeeper.out,观察错误信息
如果不确定是哪个文件?一般就是在“工作目录”或安装目录!!
- 错误1:为何成了Mode: standalone的模式?
如果不配置或配置错误Server.1/2/3,则就成了单点(standalone)模式而不是分布式(leader/follower)
- 如果你搭建过程中有任何问题,欢迎在文章下面留言
三、三节点Storm集群环境搭建
前提条件:你在三台机器上都搭建了Storm单机环境
如果你不熟悉Storm单机环境的搭建,请参考这篇文章:
- 建立storm数据目录:三台机器上都要执行
mkdir /usr/local/apache-storm-1.1.2/data
1、修改/新增storm.yaml文件:三台机器上都要执行
位置:$STORM_HOME/conf/storm.yaml
storm.zookeeper.servers:
- "jikeh00"
- "jikeh01"
- "jikeh02"
storm.local.dir: "/usr/local/apache-storm-1.1.2/data"
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
# 填写nimbus运行的机器:如果不填,storm ui访问会有问题
nimbus.seeds: ["jikeh00"]
2、在三台机器上分别启动相应的storm组件
jikeh00: nimbus supervisor(ui,logviewer)
jikeh01: supervisor(logviewer)
jikeh02: supervisor(logviewer)
jikeh00机器上:
nohup sh $STORM_HOME/bin/storm nimbus &
nohup sh $STORM_HOME/bin/storm supervisor &
nohup sh $STORM_HOME/bin/storm ui &
nohup sh $STORM_HOME/bin/storm logviewer &
jikeh01机器上:
nohup sh $STORM_HOME/bin/storm supervisor &
nohup sh $STORM_HOME/bin/storm logviewer &
jikeh02机器上:
nohup sh $STORM_HOME/bin/storm supervisor &
nohup sh $STORM_HOME/bin/storm logviewer &
3、验证storm集群是否启动成功
jike00:
[root@jikeh apache-storm-1.1.2]# jps
1732 logviewer
1380 QuorumPeerMain
2172 nimbus
2236 core
1469 Supervisor
jikeh01:
[root@jikeh src]# jps
1584 logviewer
1369 QuorumPeerMain
1739 Supervisor
jikeh02:
[root@jikeh apache-storm-1.1.2]# jps
1369 QuorumPeerMain
1546 logviewer
1725 Supervisor
4、在storm集群环境上运行我们的storm程序
我们在某台supervisor机器上运行两个作业:
- 运行第一个作业:
$STORM_HOME/bin/storm jar /usr/local/src/spring-boot-storm-0.0.1-SNAPSHOT-jar-with-dependencies.jar com.jikeh.Topology.NumberSumTopology
- 运行第二个作业:
$STORM_HOME/bin/storm jar /usr/local/src/spring-boot-storm-0.0.1-SNAPSHOT-jar-with-dependencies.jar com.jikeh.Topology.WordCountTopology
- 异常测试:我们再提交一个同样名称的作业
分析:集群上topology名称是不能重复的
5、Storm ui界面参数简单分析
注释:如果你看过我之前发布的文章,很容易理解集群环境上的参数,如果不熟悉,欢迎留言……
6、常见问题
- 问题1:错误的找到了nimbus
错误原因:我们在storm.yaml没有配置nimbus.seeds,如果没有配置,可能就会找错机器
这句话的含义:指定nimbus所在的机器,有几台,你就指定几台
如果你搭建过程中有任何问题,欢迎在文章下方留言……
下篇文章,我们将对storm进行实战调优了,重点是并行度调优……
閱讀更多 極客慧 的文章