1,Storm基礎介紹:

Storm作為大資料處理框架之一,其和Spark一樣具有非常廣泛的使用,如下為Storm的架構圖:.

 在瞭解叢集配置安裝之前需要掌握如下幾個概念(concept):

  1. 拓撲(Topologies):類似Hadoop的MapReduce 的任務(Job),區別在於 MapReduce 的一個 Job 在得到結果之後總會結束,而拓撲會一直在叢集中執行,直到被手動終止。
  2. 流(Streams):資料流(Streams)是 Storm 中最核心的抽象概念。一個數據流指的是在分散式環境中並行建立、處理的一組元組(tuple)的無界序列。
  3. 資料來源(Spouts):資料來源(Spout)是拓撲中資料流的來源。一般 Spout 會從一個外部的資料來源讀取元組然後將他們傳送到拓撲中。根據需求的不同,Spout 既可以定義為可靠的資料來源,也可以定義為不可靠的資料來源。
  4. 資料流處理元件(Bolts):拓撲中所有的資料處理均是由 Bolt 完成的。通過資料過濾(filtering)、函式處理(functions)、聚合(aggregations)、聯結(joins)、資料庫互動等功能,Bolt 幾乎能夠完成任何一種資料處理需求。
  5. 資料流分組(Stream groupings):為拓撲中的每個 Bolt 的確定輸入資料流是定義一個拓撲的重要環節。資料流分組定義了在 Bolt 的不同任務(tasks)中劃分資料流的方式。
  6. 可靠性(Reliability)
  7. 任務(Tasks):在 Storm 叢集中每個 Spout 和 Bolt 都由若干個任務(tasks)來執行。
  8. 工作程序(Workers):拓撲是在一個或多個工作程序(worker processes)中執行的
  9. nimbus:storm叢集的守護程序之一,所以叢集的主管理服務。
  10. supervisor:storm叢集的worker節點,執行任務的機器守護程序。
  11. zookeeper:作為storm叢集的配置管理存在。(zookeeper基本是配置管理的主選軟體)

2,Storm叢集安裝

2.1 叢集部署架構介紹

在192.168.32.150~152三臺主機部署storm叢集,依賴zookeeper完成配置管理及nimbus和supervisor的註冊工作。

--zookeeper
  192.168.32.150
  192.168.32.151
  192.168.32.152
--nimbus
  192.168.32.150
--supbervisor
  192.168.32.151
  192.168.32.152
前置條件:在安裝和配置之前需要保證所有機器JDK7+和python 2.6.6+。

2.2 zookeeper叢集搭建

  2.2.1 下載解壓zookeeper:http://zookeeper.apache.org/releases.html

  2.2.2 修改zookeeper的conf/zoo.cfg檔案,增加如下配置(每臺機器的zookeeper配置均如下)

  clientPort=2181
  server.150=192.168.32.150:2888:3888
  server.151=192.168.32.151:2888:3888
  server.152=192.168.32.152:2888:3888

  2.2.3 啟動zookeeper叢集

在每臺機器上通過zookeeper的bin/zkServer.sh start啟動zk,zookeeper會自動組建叢集。

  2.2.4 zookeeper環境確認:在每臺機器上執行zkServer.sh status檢視其狀態,如

[[email protected] ~]# ./zookeeper/zookeeper-3.4.9/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower

2.3 Storm叢集搭建

  2.3.1 下載解壓storm:http://storm.apache.org/releases/1.2.1

  2.3.2 配置storm,修改conf/storm.yaml檔案,增加如下配置(每臺機器配置均相同):

storm.zookeeper.servers:
      - "192.168.32.150"
      - "192.168.32.151"
      - "192.168.32.152"

storm.zookeeper.port: 2181

storm.local.dir: "/root/storm/storm-local"
nimbus.seeds: ["192.168.32.150"]

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

storm.health.check.dir: "healthchecks"

storm.health.check.timeout.ms: 5000

其中storm.local.dir指定的目錄需要提前建立,supervisor.slots.ports配置的埠數量決定了每臺supervisor機器的worker數量,每個worker會有自己的監聽埠用於監聽任務。

2.3.3 啟動storm:

在192.168.32.150機器啟動nimbus和監控

#!/bin/sh

STORM_HOME=/root/storm/storm-1.2.1
nohup $STORM_HOME/bin/storm nimbus &
nohup $STORM_HOME/bin/storm ui &

在192.168.32.151和152機器啟動supervisor作為worker

#!/bin/sh

STORM_HOME=/root/storm/storm-1.2.1
nohup $STORM_HOME/bin/storm supervisor &
#nohup $STORM_HOME/bin/storm ui &
3 環境確認

通過瀏覽器訪問ui監控介面,"storm ui"命令執行的機器ip + 預設8080埠,如本例中的http://192.168.32.150:8080


到此,storm叢集搭建完成,主要工作為:1,zookeeper的安裝;2,storm中配置zookeeper的地址;3,分別啟動storm的nimbus和supervisor及監控ui。

下一篇將介紹在此叢集中執行一個Toplogy。