前言
還是那句話,剛開始不要非要搭建一個集群環境,在繼續往下學習,單機環境下依然可以掌握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進行實戰調優了,重點是並行度調優……
閱讀更多 極客慧 的文章
關鍵字: 搭建 集群 VirtualBox