dataSource:數據源,生產數據的東西html
spout:接收數據源過來的數據,而後將數據往下游發送node
bolt:數據的處理邏輯單元。能夠有不少個,基本上每一個bolt都處理一部分工做,而後將數據繼續往下游的bolt發送mysql
storm不會保存數據,也不會生產數據,只是一個數據的搬運工web
tuple:元組的概念,能夠理解爲一個數組,或者一個集合,裏面能夠封裝不少東西,數據從上游往下游發送,都是封裝在tuple裏面了sql
topology:spout與bolt組織到一塊兒,造成一個topology mongodb
注意,配置文件比較嚴格,直接拷貝,儘可能不要去手寫!apache
===========================================編程
三臺機器運行服務規劃數組
運行服務\機器規劃服務器 |
Node01 |
Node02 |
Node03 |
Zookeeper版本 |
3.4.5 |
||
Zookeeper服務 |
是 |
是 |
是 |
Storm版本 |
Apache-storm-1.1.1 |
||
Nimbus服務 |
是(leader) |
是 |
是 |
Supervisor服務 |
是 |
是 |
是 |
IP地址規劃 |
192.168.52.100 |
192.168.52.110 |
192.168.52.120 |
Node01配置文件修改
修改zoo.cfg
dataDir=/export/servers/zookeeper-3.4.9/zkData/data
dataLogDir=/export/servers/zookeeper-3.4.9/zkData/log
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
修改myid
Node02 修改配置文件
修改zoo.cfg
dataDir=/export/servers/zookeeper-3.4.9/zkData/data
dataLogDir=/export/servers/zookeeper-3.4.9/zkData/log
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
修改myid
Node03修改配置文件
修改zoo.cfg
dataDir=/export/servers/zookeeper-3.4.9/zkData/data
dataLogDir=/export/servers/zookeeper-3.4.9/zkData/log
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
修改myid
三臺服務器啓動zookeeper服務
bin/zkServer.sh start
三臺機器查看zookeeper服務狀態
bin/zkServer.sh status
一、上傳storm壓縮包
二、解壓
tar -zxvf apache-storm-1.1.1.tar.gz -C ../servers/
三、修改配置文件
storm.zookeeper.servers:
- "node01"
- "node02"
- "node03"
#
nimbus.seeds: ["node01", "node02", "node03"]
storm.local.dir: "/export/servers/apache-storm-1.1.1/stormdata"
ui.port: 8088 #修改成8089,由於和kafka的8088衝突了
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
四、將storm安裝程序分發拷貝到另外兩臺機器上
scp -r apache-storm-1.1.1/ node02:/export/servers/
scp -r apache-storm-1.1.1/ node03:$PWD
二、 三臺機器啓動storm服務
Node01 啓動相關服務
啓動 nimbus進程
nohup bin/storm nimbus >/dev/null 2>&1 &
啓動web UI
nohup bin/storm ui >/dev/null 2>&1 &
啓動logViewer
nohup bin/storm logviewer >/dev/null 2>&1 &
啓動supervisor
nohup bin/storm supervisor >/dev/null 2>&1 &
Node02啓動相關服務
nimbus:nohup bin/storm nimbus >/dev/null 2>&1 &
logviewer:nohup bin/storm logviewer >/dev/null 2>&1 &
supervisor:nohup bin/storm supervisor >/dev/null 2>&1 &
node03啓動相關服務
nimbus:nohup bin/storm nimbus >/dev/null 2>&1 &
logviewer:nohup bin/storm logviewer >/dev/null 2>&1 &
supervisor:nohup bin/storm supervisor >/dev/null 2>&1 &
訪問地址
http://192.168.8.100:8089/index.html 或者
http://node01:8089/
DataSource:外部數據源
Spout:接受外部數據源的組件,將外部數據源轉化成Storm內部的數據,以Tuple爲基本的傳輸單元下發給Bolt
Bolt:接受Spout發送的數據,或上游的bolt的發送的數據。根據業務邏輯進行處理。發送給下一個Bolt或者是存儲到某種介質上。介質能夠是mongodb或mysql,或者其餘。
Tuple:Storm內部中數據傳輸的基本單元,裏面封裝了一個List對象,用來保存數據。
StreamGrouping:數據分組策略
7種:shuffleGrouping(Random函數),
Non Grouping(Random函數),
FieldGrouping(Hash取模)、
Local or ShuffleGrouping 本地或隨機,優先本地。
其中Local or ShuffleGrouping 是若是分組的時候接收bolt的線程和發送者在一個JVM中默認優先選擇一個JVM中的bolt就是local,不然和ShuffleGrouping效果同樣。