Storm介紹及安裝部署

本節內容:node

  • Apache Storm是什麼
  • Apache Storm核心概念
  • Storm原理架構
  • Storm集羣安裝部署
  • 啓動storm ui、Nimbus和Supervisor

 

1、Apache Storm是什麼

Apache Storm是自由開源的分佈式實時計算系統,擅長處理海量數據,適用於數據實時處理而非批處理。數據庫

批處理使用的大可能是鼎鼎大名的hadoop或者hive,做爲一個批處理系統,hadoop以其吞吐量大、自動容錯等優勢,在海量數據處理上獲得了普遍的使用。可是,hadoop不擅長實時計算,由於它自然就是爲批處理而生的,這也是業界一致的共識。不然最近幾年也不會有s4,storm,puma這些實時計算系統如雨後春筍般冒出來啦。apache

舉個搜索場景中的例子,當一個賣家發佈了一條寶貝信息時,他但願的固然是這個寶貝立刻就能夠被賣家搜索出來、點擊、購買啦,相反,若是這個寶貝要等到次日或者更久才能夠被搜出來,估計就會有很多損失了。 再舉一個推薦的例子,若是用戶昨天在淘寶上買了一雙襪子,今天想買一副泳鏡去游泳,可是卻發現系統在竭盡全力地給他推薦襪子、鞋子,根本對他今天尋找泳鏡的行爲視而不見,這樣商家的利益就有所損失。這是由於後臺系統作的是天天一次的全量處理,並且大可能是在夜深人靜之時作的,那麼客戶今天白天作的事情要到明天才能反映出來。這也就是爲何須要實時處理的緣由。vim

 

2、Apache Storm核心概念

  • Nimbus:Storm集羣主節點,負責資源分配和任務調度。咱們提交任務和截止任務都是在Nimbus上操做的。一個Storm集羣只有一個Nimbus節點。
  • Supervisor:Storm集羣工做節點,接受Nimbus分配任務,管理全部Worker。
  • Worker:工做進程,每一個工做進程中都有多個Task。
  • Task:任務,每一個Spout和Bolt都是一個任務,每一個任務都是一個線程。
  • Topology:計算拓撲,包含了應用程序的邏輯。
  • Stream:消息流,關鍵抽象,是沒有邊界的Tuple序列。
  • Spout:消息流的源頭,Topology的消息生產者。
  • Bolt:消息處理單元,能夠過濾、聚合、查詢數據庫。
  • Stream grouping:消息分發策略,一共6種,定義每一個Bolt接受何種輸入。
  • Reliability:可靠性,Storm保證每一個Tuple都會被處理。

 

3、Storm原理架構

1. Storm集羣架構圖架構

Zookeeper集羣在Storm集羣中的做用:分佈式

Zookeeper集羣負責Nimbus節點和Supervior節點之間的通訊,監控各個節點之間的狀態。好比一般咱們提交任務的時候是在Nimbus節點上執行的,Nimbus節點經過zk集羣將任務分發下去,而Supervisor是真正執行任務的地方。Nimbus節點經過zk集羣監控各個Supervisor節點的狀態,當某個Supervisor節點出現故障的時候,Nimbus節點就會經過zk集羣將那個Supervisor節點上的任務從新分發,在其餘Supervisor節點上執行。這就意味着Storm集羣也是高可用集羣,若是Nimbus節點出現故障的時候,整個任務並不會中止,可是任務的管理會出現影響,一般這種狀況下咱們只須要將Nimbus節點恢復就能夠了。Nimbus節點不支持高可用,這也是Storm目前面臨的問題之一。不過通常狀況下,Nimbus節點的壓力不大,一般不會出現問題。oop

通常狀況下,Zookeeper集羣的壓力並不大,通常只須要部署3臺就夠了。Zookeeper集羣在Storm集羣中邏輯上是獨立的,但在實際部署的時候,通常會將zk節點部署在Nimbus節點或Supervisor節點上。ui

 

2. 數據處理流程圖spa

storm處理數據的特色:數據源源不斷,不斷處理。操作系統

 

3. 拓撲圖分析

storm中是沒有數據存儲結構的,咱們須要本身設計數據落地接口,指明數據存儲到哪一部分中。Storm自己是不存儲數據的。

 

4、Storm集羣安裝部署

1. 環境信息

主機名 操做系統版本 IP地址 安裝軟件
log1 CentOS 7.0 114.55.29.86 JDK1.七、zookeeper-3.4.六、apache-storm-1.0.0
log1 CentOS 7.0 114.55.29.241 JDK1.七、zookeeper-3.4.六、apache-storm-1.0.0
log3 CentOS 7.0 114.55.253.15 JDK1.七、zookeeper-3.4.六、apache-storm-1.0.0

 

 

 

 

 

2. 安裝Zookeeper集羣

參見以前的文章《Zookeeper介紹及安裝部署》。

 

3. 安裝Storm集羣

log一、log2和log3部署storm集羣,log1做爲Nimbus節點,log2和log3做爲surpervisor節點。

(1)下載安裝軟件並解壓

[root@log1 local]# wget http://apache.fayea.com/storm/apache-storm-1.0.0/apache-storm-1.0.0.tar.gz
[root@log1 local]# tar zxf apache-storm-1.0.0.tar.gz

 

(2)配置storm

[root@log1 ~]# cd /usr/local/apache-storm-1.0.0/
[root@log1 apache-storm-1.0.0]# vim conf/storm.yaml
  • 配置Zookeeper地址(配置Zookeeper的主機名,注意: 若是Zookeeper集羣使用的不是默認端口,那麼還須要配置storm.zookeeper.port)

 

  • storm.local.dir: The Nimbus and Supervisor daemons require a directory on the local disk to store small amounts of state (like jars, confs, and things like that). 在配置文件裏添加一行:
storm.local.dir: "/usr/local/apache-storm-1.0.0/status"

這個status目錄在storm啓動的時候會自動建立,固然也能夠提早建立好。

 

  • 配置nimbus.seeds:用於配置主控節點的地址,能夠配置多個。

 

  • 配置supervisor.slots.ports
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

配置工做節點上的進程端口。你配置一個端口,意味着工做節點上啓動一個worker,在實際的生產環境中,咱們須要根據實際的物理配置以及每一個節點上的負載狀況來配置這個端口的數量。在這裏每一個節點我象徵性的配置4個端口。

注意:以上配置,凡有冒號的地方,冒號後都要有個空格。

 

log2和log3主機也是一樣的配置。拷貝這臺機器的storm包到log2和log3主機:

[root@log1 local]# scp -pr apache-storm-1.0.0 root@114.55.29.241:/usr/local/
[root@log1 local]# scp -pr apache-storm-1.0.0 root@114.55.253.15:/usr/local/

 

  • 對於兩臺supervisor node,咱們額外開啓JMX支持,在配置文件中加入以下配置:
supervisor.childopts: -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=9998

9998就是用於經過JMX收集supervisior JVM指標的端口。

 

(3)配置storm環境變量

[root@log1 apache-storm-0.10.0]# vim /etc/profile
export STORM_HOME=/usr/local/apache-storm-0.10.0
export PATH=$STORM_HOME/bin:$PATH
[root@log1 apache-storm-0.10.0]# source /etc/profile

 

5、啓動storm ui、Nimbus和Supervisor

log1節點啓動nimbus和storm ui:

[root@log1 ~]# nohup storm ui >/dev/null 2>&1 &
[root@log1 ~]# nohup storm nimbus >/dev/null 2>&1 &

 

log2和log3主機啓動Supervisor節點:

[root@log2 ~]# nohup storm supervisor >/dev/null 2>&1 &
[root@log3 ~]# nohup storm supervisor >/dev/null 2>&1 &

 

訪問ui頁面: http://114.55.29.86:8080/

界面簡單介紹:

  • Used slots:使用的worker數。
  • Free slots:空閒的worker數。
  • Executors:每一個worker的物理線程數。
相關文章
相關標籤/搜索