Storm入門與實踐(2)構建Storm的開發環境與集羣

1. Storm 技術棧

Storm 運行在JVM之上,大部分功能都是通過Java與Clojure進行開發。
Storm的主要接口都是通過Java進行開發,但絕大多數的邏輯都是由Clojure進行實。
Python主要用來實現Storm的後臺程序以及管理命令程序。

2. Storm環境搭建

在搭建Storm環境之前,需要對Java以及Zookeeper的環境進行配置

2.1 安裝基礎依賴

2.1.1 安裝JDK

  1. 下載安裝包:http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz
  2. 解壓縮:tar -xvf jdk-8u144-linux-x64.tar.gz
  3. 設置環境變量,在/etc/profile輸入以下內容
JAVA_HOME=/usr/java/jdk-8u144-linux-x64
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
  1. 執行source /etc/profile
  2. 驗證:java -version

2.1.2 安裝Zookeeper

安裝過程參見:http://blog.csdn.net/eric_sunah/article/details/43969603

2.2 本地調試/開發

如果還沒有搭建集羣,又想試一下Storm的運行效果,可以通過本地運行的方式運行,提交Topology的方式如下:

LocalCluster cluster = new LocalCluster();
cluster.submitTopology("word-count", conf, builder.createTopology());

2.3 手動配置集羣

當併發量較大時,需要將Topology提交到集羣中運行,本章主要介紹手動搭建集羣的方式

集羣配置流程如下:
1. 環境信息
- storm的版本:1.1.0
- OS版本:Ubuntu 14.04
2. 機器角色分配

Host 角色
192.168.5.137 Nimbus,Supervisor,UI
192.168.5.138 Supervisor
192.168.5.139 Supervisor
192.168.5.140 Supervisor

3. 在192.168.5.137上下載storm:http://www.apache.org/dyn/closer.lua/storm/apache-storm-1.1.1/apache-storm-1.1.1.tar.gz
4. 解壓縮:tar –zvxf apache-storm-1.1.1.tar.gz –C /usr/local/
5. 配置環境變量/etc/profile

export STORM_HOME==/usr/local/storm    
export PATH=$STORM_HOME/bin:$PATH 
  1. 修改storm.yaml,Storm發行版本解壓目錄下有一個conf/storm.yaml文件,用於配置Storm。以下配置選項是必須在conf/storm.yaml中進行配置的:
# Storm使用的Zookeeper集羣地址
storm.zookeeper.servers:
     - "192.168.5.138"
     - "192.168.5.139"
     - "192.168.5.140"
# Storm集羣Nimbus機器地址,各個Supervisor工作節點需要知道哪個機器是Nimbus,這裏提供兩個做主備
nimbus.seeds: ["192.168.5.137", "192.168.5.138"]
# Nimbus和Supervisor進程用於存儲少量狀態,如jars、confs等的本地磁盤目錄,需要提前創建該目錄並給以足夠的訪問權限。
storm.local.dir: "/root/storm/wkdir"
# Storm ui的端口
ui.port: 9999
# 對於每個Supervisor工作節點,需要配置該工作節點可以運行的worker數量。每個worker佔用一個單獨的端口用於接收消息,該配置選項即用於定義哪些端口是可被worker使用的。默認情況下,每個節點上可運行4個workers,分別在6700、6701、6702和6703端口
supervisor.slots.ports:
     - 6700
     - 6701
     - 6702
     - 6703
  1. 將192.168.5.137的/usr/local/apache-storm-1.1.1 目錄同步到其他幾個節點
  2. 每個節點都執行 source /etc/profile
  3. 啓動進程:Stor也是快速失敗(fail-fast)的系統,Storm可以在任意時刻被停止,並且當進程重啓後被正確地恢復執行。這也是爲什麼Storm不在進程內保存狀態的原因,即使Nimbus或Supervisors被重啓,運行中的Topologies不會受到影響。
    以下是啓動Storm各個後臺進程的方式:

    • Nimbus: 在Storm主控節點上運行 “storm nimbus &”
    • Supervisor: 在Storm各個工作節點上運行” storm supervisor &”
    • UI: 在Storm主控節點上運行 “storm ui &”

    注意事項:

    • Storm後臺進程被啓動後,將在Storm安裝部署目錄下的logs/子目錄下生成各個進程的日誌文件。
    • Storm UI必須和Storm Nimbus部署在同一臺機器上,否則UI無法正常工作
    • 爲了方便使用,可以將bin/storm加入到系統環境變量中
  4. 驗證:登錄http://192.168.137:9999/index.html 查看集羣情況

2.4 提交Topology

如果Topology已經生成好了Jar包,可以通過以下方式提交Topology

./storm jar storm_demo.jar com.eric.storm.sample.WordCountTopolopgyAllInJava

3 配置說明

Storm中包含了大量的配置,至於集羣的配置信息可以參考 http://192.168.5.137:9999/index.html 中的 Nimbus Configuration 部分的內容。
關於配置的解釋,可以參考官方文檔:http://storm.apache.org/releases/1.1.1/Configuration.html

4 自動化配置集羣

當集羣規模比較大時,集羣的管理是一個複雜的問題。Puppet提供了對Storm 集羣進行管理的一套腳本。需要的同學可以自行研究下,github地址:https://github.com/miguno/puppet-storm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章