1. 程式人生 > 程式設計 >Storm 系列(四)—— Storm 叢集環境搭建

Storm 系列(四)—— Storm 叢集環境搭建

一、叢集規劃

這裡搭建一個 3 節點的 Storm 叢集:三臺主機上均部署 SupervisorLogViewer 服務。同時為了保證高可用,除了在 hadoop001 上部署主 Nimbus 服務外,還在 hadoop002 上部署備用的 Nimbus 服務。Nimbus 服務由 Zookeeper 叢集進行協調管理,如果主 Nimbus 不可用,則備用 Nimbus 會成為新的主 Nimbus

https://github.com/heibaiying

二、前置條件

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 檢視程式,三臺伺服器的程式應該分別如下:

https://github.com/heibaiying


訪問 hadoop001 或 hadoop002 的 8080 埠,介面如下。可以看到有一主一備 2 個 Nimbus 和 3 個 Supervisor,並且每個 Supervisor 有四個 slots,即四個可用的 worker 程式,此時代表叢集已經搭建成功。

https://github.com/heibaiying

五、高可用驗證

這裡手動模擬主 Nimbus 異常的情況,在 hadoop001 上使用 kill 命令殺死 Nimbus 的執行緒,此時可以看到 hadoop001 上的 Nimbus 已經處於 offline 狀態,而 hadoop002 上的 Nimbus 則成為新的 Leader

https://github.com/heibaiying

更多大資料系列文章可以參見 GitHub 開源專案大資料入門指南