手把手教你搭建三节点Storm集群环境,并在上面运行Storm程序

前言

还是那句话,刚开始不要非要搭建一个集群环境,在继续往下学习,单机环境下依然可以掌握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

  • 异常测试:我们再提交一个同样名称的作业
手把手教你搭建三节点Storm集群环境,并在上面运行Storm程序

分析:集群上topology名称是不能重复的

5、Storm ui界面参数简单分析

手把手教你搭建三节点Storm集群环境,并在上面运行Storm程序

手把手教你搭建三节点Storm集群环境,并在上面运行Storm程序

注释:如果你看过我之前发布的文章,很容易理解集群环境上的参数,如果不熟悉,欢迎留言……

6、常见问题

  • 问题1:错误的找到了nimbus
手把手教你搭建三节点Storm集群环境,并在上面运行Storm程序

手把手教你搭建三节点Storm集群环境,并在上面运行Storm程序

错误原因:我们在storm.yaml没有配置nimbus.seeds,如果没有配置,可能就会找错机器

这句话的含义:指定nimbus所在的机器,有几台,你就指定几台

如果你搭建过程中有任何问题,欢迎在文章下方留言……

下篇文章,我们将对storm进行实战调优了,重点是并行度调优……


分享到:


相關文章: