Storm集羣部署

一. 說明

  Storm是一個分佈式實時計算系統,Storm對於實時計算的意義就至關於Hadoop對於批量計算的意義。對於實時性較高的系統Storm是不錯的選擇。Hadoop提供了map, reduce原語,使批處理程序變得很是地簡單和優美。一樣,storm也爲實時計算提供了一些簡單優美的原語。html

  涉及的術語說明:node

  Nimbus:Storm集羣的主控節點,負責在Storm集羣內分發代碼,分配任務給工做機器,而且負責監控集羣運行狀態。其進程名爲nimbus。apache

  Supervisor:Supervisor負責監遵從Nimbus分配給它執行的任務,據此啓動或中止執行任務的工做進程。其進程名爲supervisor。vim

  core:Storm的UI服務進程。網絡

  安裝部署前的準備工做:分佈式

  1. 配置各主機IP,將各主機IP配置爲靜態IP(保證各主機能夠正常通訊,爲避免過多的網絡傳輸,建議在同一網段)。oop

  2. 修改各主機名,Storm集羣中的全部主機都須要修改。ui

  3. 配置各主機映射,修改hosts文件,加入各主機IP和主機名的映射。spa

  4. 開放相應端口,後面文檔中配置的端口都須要開放(或者關閉防火牆)。code

  5. Python2.7及以上版本。

  6. 保證Zookeeper集羣服務正常運行。若是在CentOS上安裝過Hadoop或者Zookeeper的話,1-5項基本沒問題。關於Zookeeper參考:http://www.cnblogs.com/wxisme/p/5178211.html

  7. 這裏使用的JDK、Storm版本分別爲1.8和0.9.5。

二. 安裝配置Storm集羣

  1. 到Storm官網下載對應的安裝包並上傳到集羣節點。

  2. 解壓安裝包

tar -xvzf apache-storm-0.9.5.tar.gz

  3. 修改storm.yaml配置文件

vim conf/storm.yaml

  Storm集羣使用的Zookeeper集羣地址,根據實際狀況進行修改。

storm.zookeeper.servers:
      - "node1"
      - "node2"
      - "node3"

  Zookeeper的端口不是默認端口時須要配置參數:

storm.zookeeper.port: "修改的端口"

  Nimbus和Supervisor進程用於存儲少許狀態,如jars、confs等的本地磁盤目錄,須要提早建立該目錄(根據實際狀況建立)並給以足夠的訪問權限。

storm.local.dir: "/usr/storm/data"

  Storm集羣Nimbus機器地址,各個Supervisor工做節點須要知道哪一個機器是Nimbus,以便下載Topologies的jars、confs等文件。根據實際狀況進行修改。

nimbus.host: "node3"

  對於每一個Supervisor工做節點,須要配置該工做節點能夠運行的worker數量。每一個worker佔用一個單獨的端口用於接收消息,該配置選項即用於定義哪些端口是可被worker使用的。默認狀況下,每一個節點上可運行4個workers,分別在6700、670一、6702和6703端口。根據實際狀況進行修改。

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

  DRPC提供了集羣中處理功能的訪問接口,storm集羣drpc地址,根據實際狀況進行修改。關於DRCP參考:http://www.dataguru.cn/article-5572-1.html

drpc.servers:
      - "node3"

  默認狀況下,Storm啓動worker進程時,JVM的最大內存是768M。因爲在使用過程當中,Bolt中加載大量數據,768M內存沒法知足要求,會致使內存溢出。根據實際狀況進行修改。

worker.childopts: "-Xmx1024m"

注意:上面的各項配置之間最好不要留有空行或者其餘的空白字符。

三. 啓動Storm集羣

  1. 在主控節點啓動Nimbus服務

bin/storm nimbus >> /dev/null &

  查看nimbus服務是否啓動:

jps

  2.在各個節點啓動Supervisor服務

bin/storm supervisor >> /dev/null &

  3.啓動drpc服務

bin/storm drpc >> /dev/null &

  4.在主控節點啓動Storm UI服務

bin/storm ui >> /dev/null &

  查看UI服務是否啓動:

jps

  訪問Storm UI

http://nimbus:8080/

四. 向Storm集羣提交服務

  執行如下命令,啓動Storm Topology:

bin/storm jar test.jar com.test.MyTopology arg1 arg2

  其中,test.jar是包含Topology實現代碼的jar包,com.test.MyTopology的main方法是Topology的入口,arg1和arg2爲com.test.MyTopology執行時須要傳入的參數。

  中止Storm Topology:

bin/storm kill {toponame}

  其中,{toponame}爲Topology提交到Storm集羣時指定的Topology任務名稱。

簡單的Storm集羣就部署好了,能夠開始愉快的Storm之旅了!

相關文章
相關標籤/搜索