1. 程式人生 > >Storm集群搭建

Storm集群搭建

targe 狀態信息 系統 根據 storm for 簡單介紹 div tails

  上一篇隨筆中我介紹了Storm中的幾個重要概念:Topology,tuple,Spout和Bolt。這幾個核心概念是與Storm運算相關的,由於上節課關於單詞計數的實例實在單機環境下通過核心包(storm-core-0.10.2.jar)模擬集群環境的,所以實際上並沒有涉及到Storm集群的相關知識。在實際生產環境中,對於Storm的應用不可能向上面那樣模擬,而是實實在在的在集群環境中應用Storm,所以這篇隨筆我就簡單介紹一下與Storm集群相關的兩個概念(nimbus and supervisor)和Storm集群的搭建。

Nimbus and Supervisor

  Storm集群是一個典型的主從結構(master/salve),在主從結構中,通常有一個靜態配置的節點或者動態運行中被選舉出來的節點充當主節點,稱為nimbus。nimbus節點的主要作用是管理、協調和監控在集群上運行的Topology。包括Topology的發布,任務的指派和事件處理失敗時重新指派任務。而負責任務運算的工作節點稱為Supervisor。在Nimbus和Supervisor之間還存在著一個Apache Zookeepre實例,Storm主要使用zookeeper來協調集群的狀態信息,比如任務的分配情況,worker的狀態,supervisor之間的nimbus的拓撲度量。supervisor和nimbus之間的通信主要是結合zookeeper的狀態變更通知和監控通知來處理的。

Storm集群搭建

  • 基本環境:
    • 操作系統:CentOS Linux release 7.3.1611 (Core)
    • jdk: openjdk version "1.8.0_102"
    • python: python 2.7

  為了模擬集群環境,本實例通過在VirtualBox虛擬機中安裝三臺CentOS服務器,然後在每一臺服務器上安裝和配置集群需要的zookeeper環境和Storm安裝包。zookeeper集群搭建大家可以在網上搜索相關資料,也可以參考本人隨筆zookeeper安裝的三種模式。當zookeeper集群搭建好後就可以搭建Storm集群啦。

  首先通過主機下載Storm集群安裝包:

http://www.apache.org/dyn/closer.lua/storm/apache-storm-0.10.2/apache-storm-0.10.2.tar.gz

  然後將安裝包通過FileZilla工具分別傳送給三臺服務器,並通過ssh命令分別連接三臺服務器並解壓apache-storm-0.10.2.tar.gz到相關安裝目錄下:

tar -zxvf apache-storm-0.10.2.tar.gz

  然後進入解壓目錄下的conf目錄下修改配置文件storm.yaml文件內容:

  首先配置zookeeper集群地址,該配置內容為必須配置項:

 storm.zookeeper.servers:
     
- "192.168.0.108" - "192.168.0.109" - "192.168.0.110"

  由於本例實驗三臺服務器的IP地址分別為“192.168.0.108”、"192.168.0.109"、"192.168.0.110",所以在搭建zookeeper集群時,在三臺服務器上均部署了zookeeper。由於本例zookeeper集群配置的時候均使用了默認端口"2181",所以可以不用配置storm.zookeeper.port選項,如果zookeeper集群搭建的時候沒有使用默認端口,則需要配置該項內容。

//按照具體環境進行配置
storm.zookeeper.port:2181

  然後配置nimbus服務器地址:

 nimbus.host: "192.168.0.108"

  各個supervisor服務器需要知道nimbus地址,以便下載Topologies以及其他信息。

  由於各個storm集群在運行過程中需要知道一些少量的狀態信息,如jars,conf等目錄信息,需要配置一個路徑用於存儲這些相關信息,在配置該項前首先要在存儲路徑下建立相應的文件夾,然後將該文件夾路徑設置為存儲路徑:

mkdir  /home/test/developEnvironment/apache-storm-0.10.2/storm
storm.local.dir: "/home/test/developEnvironment/apache-storm-0.10.2/storm"

  然後配置supervisor對應的work端口。對於每個supervisor工作節點,需要配置可以在其上面運行的worker數量,而這個worker數量是通過配置各個worker的端口體現出來的。worker通過自己的端口與外界進行通信,獲取計算需要的信息以及將計算結構傳出去。一般情況下,每個supervisor默認可以配置四個worker,其端口分別是:6700,6701,6702和6703。本例配置如下:

 supervisor.slots.ports: 
        - 6700
        - 6701
        - 6702
        - 6703

  最後配置一個非必要的參數,當Storm集群啟動起來後,可以在nimbus所在的主機上通過網頁查看Storm集群狀態信息:

ui.port:8081

  如上所示,已經將一個Storm集群最基本的幾個配置參數已經配置完成,完成後的配置文件如下所示:

  storm.yaml

########### These MUST be filled in for a storm configuration
 storm.zookeeper.servers:
     - "192.168.0.108"
     - "192.168.0.109"
     - "192.168.0.110"

 ui.port: 8081
 nimbus.host: "192.168.0.108"
 storm.local.dir: "/home/test/developEnvironment/apache-storm-0.10.2/storm"
 supervisor.slots.ports:
        - 6700
        - 6701
        - 6702
        - 6703

  同樣,在其他兩臺服務器中配置相同的配置內容。到目前為止,所有配置已經完成,下面就來啟動服務。

  啟動zookeeper服務。分別進入三臺服務器的zookeeper安裝目錄下的bin目錄,執行如下代碼:

//根據實際配置文件路徑及名稱填寫相關參數
./zkServer.sh start ../conf/zoo.cfg

  當zookeeper服務啟動成功後,接下來啟動Storm的nimbus服務。根據配置文件,進入nimbus.host對應的那臺主機,進入Storm安裝目錄的bin目錄下執行如下命令:

./storm nimbus &

  終端出現如下信息說明啟動成功:

技術分享

  然後分別進入其他兩臺服務器,啟動supervisor服務:

./storm supervisor &

  當終端打印如下信息時,說明supervisor啟動成功:

技術分享

  為了驗證Storm服務是否正確啟動,我們可以通過網頁進行查看Storm狀態,在訪問網頁之前,需要在nimbus服務器上啟動相關服務:

./storm ui &

  然後在主機瀏覽器上通過訪問如下網址進行頁面查看:

http://192.168.0.108:8081/index.html

  網頁顯示如下信息:

技術分享

  當可以看見該界面時,說明你已經大功告成啦。

  到此,我們最基本的Storm集群環境搭建就圓滿完成啦。

參考資料

  • storm集群部署

Storm集群搭建