JStorm集群的安裝和使用


0 JStorm概述

JStorm是一個分布式的實時計算引擎。從應用的角度,JStorm應用是一種遵守某種編程規范的分布式應用;從系統角度, JStorm是一套類似MapReduce的調度系統; 從數據的角度,JStorm是一套基於流水線的消息處理機制。

詳情見:JStorm概敘及應用場景

1 JStorm集群組件

Storm集群中包含兩類節點:主控節點(Master Node)和工作節點(Work Node)。其分別對應的角色如下:

    • 主控節點(Master Node)上運行一個被稱為Nimbus的后台程序,Nimbus的作用類似於Hadoop中JobTracker的角色。Nimbus負責在Storm集群內分發代碼,分配任務給工作機器,並且負責監控集群運行狀態。
    • 每個工作節點(Work Node)上運行一個被稱為Supervisor的后台程序,Supervisor類似於Hadoop中的TaskTracker。Supervisor負責監聽從Nimbus分配給它執行的任務,據此啟動或停止執行任務的工作進程。每一個工作進程執行一個Topology的子集;一個運行中的Topology由分布在不同工作節點上的多個工作進程組成。

Nimbus和Supervisor節點之間所有的協調工作是通過Zookeeper集群來實現的。

Nimbus和Supervisor進程都是快速失敗(fail-fast)和無狀態(stateless)的;Storm集群不在進程內保存狀態,所有的狀態要么在Zookeeper集群中,要么存儲在本地磁盤上。這意味着你可以在任意時刻用kill -9來殺死Nimbus和Supervisor進程,它們在重啟后可以繼續工作,運行中的Topologies不會受到影響。

 

2 JStorm集群架構

2.1 架構

參考資料:https://github.com/alibaba/jstorm/wiki/JStorm%E6%9E%B6%E6%9E%84

2.2 相關術語

Nimbus

Supervisor、Worker(進程)、Task(線程)、Topology(Spout、Bolt)、Tupple

 詳情可參看:5分鍾了解JStorm基礎概念

3 JStorm集群安裝

3.1 安裝Zookeeper集群

Zookeeper的安裝和使用——MarchOn

3.2 安裝JStorm

需要在各節點上安裝JStorm,這里以jstorm-0.9.6.3為例,下載並解壓,進入jstorm-0.9.6.3

3.2.1 配置環境變量

編輯/etc/profile,加入如下內容:

export JAVA_HOME=/usr/jdk/jdk1.7.0_45
export PATH=$JAVA_HOME/bin:$PATH
export JSTORM_HOME=/usr/local/jstorm/jstorm-0.9.6.3/
export PATH=$JSTORM_HOME/bin:$PATH//將JSTORM加入構建路徑是為了方便提交拓撲,也可以不配置而是直接在bin下執行 storm 命令(還有個bin/start.sh,不過該命令運行時有問題,所以沒用之)

接着執行: source /etc/profile ,上述環境變量對機器上的所有用戶有效

3.2.2 修改conf/storm.yaml

  1. storm.zookeeper.servers: JStorm集群所用的Zookeeper集群的地址(不要包含端口,否則會啟動失敗。端口通過storm.zookeeper.port配置)
     storm.zookeeper.servers:
         - "192.168.6.131"
         - "192.168.6.132"
         - "192.168.6.133"
  2. storm.zookeeper.port:JStorm所用的Zookeeper的端口,默認為2181。如果不使用默認端口,可以配此項
  3. storm.zookeeper.root: JStorm在Zookeeper中的根目錄,默認為“/jstorm”(不用事先在Zookeeper創建)。當多個JStorm集群共享一個Zookeeper時,需要設置不同值
  4. nimbus.host: Nimbus節點的地址,以便下載Topologies的jars、confs等文件。//也可不指定,啟動nimbus節點后由於與Zookeeper交互會知道是哪個
  5. storm.local.dir: Nimbus和Supervisor進程用於存儲少量狀態數據,如jars、confs等的本地磁盤目錄,需要保證JStorm程序對該目錄有寫權限
    storm.local.dir: "%JSTORM_HOME%/../jstorm_data"
  6. java.library.path: Zeromq 和java zeromq library的安裝目錄,默認"/usr/local/lib:/opt/local/lib:/usr/lib",默認即可
  7. supervisor.slots.ports:配置該Supervisor節點運行的Woker能使用哪些端口,每個worker獨占一端口用於接收消息,因此也定義了可運行的Woker數量
     supervisor.slots.ports:
        - 6800
        - 6801
        - 6802
        - 6803
        - 6804
        - 6805
        - 6806
        - 6807

 3.2.3 啟動/停止

和Zookeeper一樣,JStorm也是快速失敗(fail-fast)的系統,這樣Storm才能在任意時刻被停止,並且當進程重啟后被正確地恢復執行。這也是為什么JStorm不在進程內保存狀態的原因,即使Nimbus或Supervisors被重啟,運行中的Topologies不會受到影響。

確定哪些節點要作為Nimbus節點,哪些作為Supervisors節點(一個節點可以同時是Nimbus、Supervisor節點),分別啟動:

  1. 守護進程方式啟動Nimbus: bin/jstorm nimbus > /dev/null 2>&1 & ,檢查logs/nimbus.log看有無錯誤
  2. 守護進程方式啟動Supervisor:   bin/jstorm supervisor > /dev/null 2>&1 & , 檢查logs/supervisor.log看有無錯誤
  3. 停止:可以直接kill Nimbus和Supervisor。(如果有拓撲正在運行則會有worker進程,先kill掉拓撲這樣woker進程就會結束)

 

4 提交拓撲

在一個節點執行以下命令:[注意配置JSTorm環境變量以便於執行jstorm命令]

  1. 提交拓撲命令: jstorm jar jar程序 拓撲入口 拓撲名 
  2. kill 拓撲命令: jstorm kill 拓撲名 秒數 

(拓撲入口一般就是main函數所在類;拓撲名是自取的名字;未指定秒數的話會完成所有清除工作后再結束)

 其他jstorm命令可以參見:Command-line-client

 

 

5 JStorm UI

JStorm UI用來監控整個JStorm集群的節點及拓撲運行情況。它就是一個war包,因此可以放在任何有Tomcat的機器上。安裝方法很簡單,如下:

    1. 把storm.yaml復制到tomcat所在機器的~/.jstorm/storm.yaml。(JStorm UI程序啟動時讀該配置文件。通過配置storm.yaml的ui.clusters可以使一個jstorm ui管理多個JStorm集群
    2. 將安裝包置於Tomcat:把$JSTORM_HOME/jstorm-ui-0.9.6.3.war復制到webapps下並mv ROOT ROOT.old;ln -s jstorm-ui-0.9.6.3 ROOT

 運行Tomcat后就可以在瀏覽器訪問JStorm UI了,如http://192.168.6.134:8080/,如:(圖中的Ports就跟上面說的supervisor.slots.ports的數量有關)

 

 

5 參考資料

  1. http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html(JStorm安裝)
  2. http://pan.baidu.com/s/1bHamHg(JStorm集群安裝文檔)
  3. http://blog.csdn.net/xiaolang85/article/details/38492277(JStorm常見問題及解決方案)
  4. https://github.com/techdocscn/storm/blob/master/source/documentation/Command-line-client.md(JStorm命令)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM