1. 程式人生 > >storm叢集部署和配置過程詳解

storm叢集部署和配置過程詳解


  先整體介紹一下搭建storm叢集的步驟:
  1. 設定zookeeper叢集
  2. 安裝依賴到所有nimbus和worker節點
  3. 下載並解壓storm釋出版本到所有nimbus和worker節點
  4. 配置storm.yaml
  5. 啟動相關後臺程序

1 首先配置zookeeper叢集

     我們知道storm通過zookeeper來協調整個叢集。zookeeper不是用來做訊息傳遞,因此storm不會給zookeeper帶來很大的壓力。單節點的zookeeper在大多情形下是可以勝任的,但是如果你想得到更好的可靠性或者部署大叢集的話,你可能就需要一個大的zookeeper叢集。關於zookeeper的部署在這裡就不多做介紹,具體請參考:
here
。      關於zookeeper的部署這裡再補充兩點:
  1. 把zookeeper執行在一個監督程序之下是非常關鍵的,因為zookeeper是一個fail-fast的程序,當它遇到任何錯誤的時候都會自動退出,具體請參考: here
  2. 定時的去壓縮和轉移zookeeper資料也是非常關鍵的,因為zookeeper不具備壓縮和清楚資料機制,如果我們不設定一個cron管理這些資料,zookeeper產生的資料會很快的佔滿磁碟,具體請參考: here
     ps:如果zookeeper啟動失敗,檢視一下它bin目錄下的zookeeper.out檔案,配置一下它的myid試試。

2 安裝依賴到nimbus和worker節點

    storm需要依賴的是:
  1. Java 6
  2. Python 2.6.6     
     需要注意,storm對大多數版本的依賴都做了測試,但是storm並不保證對任何版本的依賴都能正常工作。

3 下載解壓storm釋出版本到nimbus和worker節點

     下一步就是下載解壓storm壓縮檔案到每一臺機器,storm釋出版本可以從這裡下載from here

4 配置storm.yaml檔案

     storm裡面有一個檔案conf/storm.yaml,它就是storm的配置檔案。關於這個檔案的所有預設值可以從這裡得到here。storm.yaml中的配置會覆蓋掉default.yaml中的配置。下面配置一個叢集必須修改的配置:
     1) storm.zookeeper.servers:配置zookeeper叢集的列表
 storm.zookeeper.servers:
       - "111.222.333.444"
       - "555.666.777.888"
     如果你的zookeeper叢集使用的埠不是預設埠,那麼你還得配置storm.zookeeper.port。      2) storm.local.dir :storm的nimbus和work程序需要一個目錄來存放一小部分狀態資料,比如jars、confs等等。我們需要在每臺機器上建立這個目錄並且賦予其相應的許可權。
 storm.local.dir: "/mnt/storm"
     3) nimbus.host:worker節點需要知道哪個機器是master節點,以便自己從maser節點下載jars和confs。
 nimbus.host: "111.222.333.44"
     4) supervisor.slots.ports:對於每一臺worker機器,它決定了這臺機器一共可以執行多少個worker程序。每個worker程序會獨佔一個埠來接收訊息,這個引數就是配置了哪些埠會分配給worker程序。如果你在這配置了5個埠,那麼storm將能分配5個worker程序給這臺機器,如果配置3個埠,那麼storm也只能分配3個worker程序。storm預設分配4個worker程序到6700,6701,6702,6703埠。比如:
 supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

5 通過storm命令執行storm相關的守護程序

     最後一步就是啟動所有storm相關守護程序。當然,把這些程序都納入到監督程序管理之下是很有必要的。storm也是一個fail-fast系統,這就意味著這些程序一但遇到異常就會終止。storm之所以會這麼設計,是為了它可以在任何時候安全的終止和在程序重啟的時候恢復。這就是storm為不在程序中儲存相關狀態的原因,如果nimbus或supervisor節點重啟,執行著的topoloies不會受到任何影響。下面就是啟動storm相關程序的命令:
  1. Nimbus:在master節點執行“bin/storm nimbus”
  2. Supervisor:在每一臺worker節點執行“bin/storm supervisor”,supervisor程序負責在worker節點上啟動和停止相應的worker程序
  3. UI:執行“bin/storm ui” ,一個通過頁面管理和展示storm叢集執行狀態的工具,可以通過“http://nimbus host:8080”來訪問。     
    我們可以看到啟動storm服務程序相當簡單直接,storm產生的log會儲存在各臺機器的storm/logs目錄中,storm通過logback管理它的日誌,我們可以通過修改其logback.xml檔案來改變其log的目錄及內容。