手把手教你搭建三節點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進行實戰調優了,重點是並行度調優……


分享到:


相關文章: