Storm 系列(四)—— Storm 叢集環境搭建
一、叢集規劃
這裡搭建一個 3 節點的 Storm 叢集:三臺主機上均部署 Supervisor
和 LogViewer
服務。同時為了保證高可用,除了在 hadoop001 上部署主 Nimbus
服務外,還在 hadoop002 上部署備用的 Nimbus
服務。Nimbus
服務由 Zookeeper 叢集進行協調管理,如果主 Nimbus
不可用,則備用 Nimbus
會成為新的主 Nimbus
。
二、前置條件
Storm 執行依賴於 Java 7+ 和 Python 2.6.6 +,所以需要預先安裝這兩個軟體。同時為了保證高可用,這裡我們不採用 Storm 內建的 Zookeeper,而採用外接的 Zookeeper 叢集。由於這三個軟體在多個框架中都有依賴,其安裝步驟單獨整理至 :
三、叢集搭建
1. 下載並解壓
下載安裝包,之後進行解壓。官方下載地址:storm.apache.org/downloads.h…
# 解壓
tar -zxvf apache-storm-1.2.2.tar.gz
複製程式碼
2. 配置環境變數
# vim /etc/profile
複製程式碼
新增環境變數:
export STORM_HOME=/usr/app/apache-storm-1.2.2
export PATH=$STORM_HOME/bin:$PATH
複製程式碼
使得配置的環境變數生效:
# source /etc/profile
複製程式碼
3. 叢集配置
修改 ${STORM_HOME}/conf/storm.yaml
檔案,配置如下:
# Zookeeper叢集的主機列表
storm.zookeeper.servers:
- "hadoop001"
- "hadoop002"
- "hadoop003"
# Nimbus的節點列表
nimbus.seeds: ["hadoop001","hadoop002"]
# Nimbus和Supervisor需要使用本地磁碟上來儲存少量狀態(如jar包,配置檔案等)
storm.local.dir: "/home/storm"
# workers程式的埠,每個worker程式會使用一個埠來接收訊息
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
複製程式碼
supervisor.slots.ports
引數用來配置 workers 程式接收訊息的埠,預設每個 supervisor 節點上會啟動 4 個 worker,當然你也可以按照自己的需要和伺服器效能進行設定,假設只想啟動 2 個 worker 的話,此處配置 2 個埠即可。
4. 安裝包分發
將 Storm 的安裝包分發到其他伺服器,分發後建議在這兩臺伺服器上也配置一下 Storm 的環境變數。
scp -r /usr/app/apache-storm-1.2.2/ root@hadoop002:/usr/app/
scp -r /usr/app/apache-storm-1.2.2/ root@hadoop003:/usr/app/
複製程式碼
四. 啟動叢集
4.1 啟動ZooKeeper叢集
分別到三臺伺服器上啟動 ZooKeeper 服務:
zkServer.sh start
複製程式碼
4.2 啟動Storm叢集
因為要啟動多個程式,所以統一採用後臺程式的方式啟動。進入到 ${STORM_HOME}/bin
目錄下,執行下面的命令:
hadoop001 & hadoop002 :
# 啟動主節點 nimbus
nohup sh storm nimbus &
# 啟動從節點 supervisor
nohup sh storm supervisor &
# 啟動UI介面 ui
nohup sh storm ui &
# 啟動日誌檢視服務 logviewer
nohup sh storm logviewer &
複製程式碼
hadoop003 :
hadoop003 上只需要啟動 supervisor
服務和 logviewer
服務:
# 啟動從節點 supervisor
nohup sh storm supervisor &
# 啟動日誌檢視服務 logviewer
nohup sh storm logviewer &
複製程式碼
4.3 檢視叢集
使用 jps
檢視程式,三臺伺服器的程式應該分別如下:
訪問 hadoop001 或 hadoop002 的 8080
埠,介面如下。可以看到有一主一備 2 個 Nimbus
和 3 個 Supervisor
,並且每個 Supervisor
有四個 slots
,即四個可用的 worker
程式,此時代表叢集已經搭建成功。
五、高可用驗證
這裡手動模擬主 Nimbus
異常的情況,在 hadoop001 上使用 kill
命令殺死 Nimbus
的執行緒,此時可以看到 hadoop001 上的 Nimbus
已經處於 offline
狀態,而 hadoop002 上的 Nimbus
則成為新的 Leader
。
更多大資料系列文章可以參見 GitHub 開源專案: 大資料入門指南