Storm配置運行
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都會被處理。
Storm.yaml常用配置項
配置選項名稱 |
配置選項作用 |
topology.max.task.parallelism |
每個Topology運行時最大的executor數目 |
topology.workers |
每個Topology運行時的worker的默認數目,若在代碼中設置,則此選項值被覆蓋 |
storm.zookeeper.servers |
zookeeper集群的節點列表 |
storm.local.dir |
Storm用於存儲jar包和臨時文件的本地存儲目錄 |
storm.zookeeper.root |
Storm在zookeeper集群中的根目錄,默認是“/” |
ui.port |
Storm集群的UI地址端口號,默認是8080 |
nimbus.host: |
Nimbus節點的host |
supervisor.slots.ports |
Supervisor 節點的worker占位槽,集群中的所有Topology公用這些槽位數,即使提交時設置了較大數值的槽位數,系統也會按照當前集群中實際剩余的槽位數來 進行分配,當所有的槽位數都分配完時,新提交的Topology只能等待,系統會一直監測是否有空余的槽位空出來,如果有,就再次給新提交的 Topology分配 |
supervisor.worker.timeout.secs |
Worker的超時時間,單位為秒,超時後,Storm認為當前worker進程死掉,會重新分配其運行著的task任務 |
drpc.servers |
在使用drpc服務時,drpc server的服務器列表 |
drpc.port |
在使用drpc服務時,drpc server的服務端口 |
Storm運行依賴zookeeper,需啟動zookeeper,在此不做過多介紹可參考:https://www.cnblogs.com/zhaojiankai/p/7126181.html
Zookeeper集群在Storm集群中的作用:
Zookeeper集群負責Nimbus節點和Supervior節點之間的通信,監控各個節點之間的狀態。比如通常我們提交任務的時候是在Nimbus節點上執行的,Nimbus節點通過zk集群將任務分發下去,而Supervisor是真正執行任務的地方。Nimbus節點通過zk集群監控各個Supervisor節點的狀態,當某個Supervisor節點出現故障的時候,Nimbus節點就會通過zk集群將那個Supervisor節點上的任務重新分發,在其他Supervisor節點上執行。這就意味著Storm集群也是高可用集群,如果Nimbus節點出現故障的時候,整個任務並不會停止,但是任務的管理會出現影響,通常這種情況下我們只需要將Nimbus節點恢復就可以了。Nimbus節點不支持高可用,這也是Storm目前面臨的問題之一。不過一般情況下,Nimbus節點的壓力不大,通常不會出現問題。
一般情況下,Zookeeper集群的壓力並不大,一般只需要部署3臺就夠了。Zookeeper集群在Storm集群中邏輯上是獨立的,但在實際部署的時候,一般會將zk節點部署在Nimbus節點或Supervisor節點上。
安裝:
1.解壓安裝文件到制定的目錄,並把storm加入到環境變量
wget http://apache.fayea.com/storm/apache-storm-1.0.0/apache-storm-1.0.0.tar.gz
sudo tar -zxvf apache-storm-0.9.6.tar.gz -C /usr/local cd /usr/local sudo mv apache-storm-0.9.6 storm
sudo vi /etc/profile export STORM_HOME=/usr/local/storm export PATH=$PATH:${STORM_HOME}/bin sudo source /etc/profile
2.配置storm.yaml
storm.zookeeper.servers:
- "node3"
nimbus.seeds: ["node3"]
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
ui.port: 8889
storm.local.dir: "/usr/local/storm/data"
註意:以上配置,凡是有冒號的地方,冒號後都要有個空格。
將配置好的拷貝到其余兩臺機器上
[root@log1 local]# scp -pr apache-storm-1.0.0 [email protected]:/usr/local/ [root@log1 local]# scp -pr apache-storm-1.0.0 [email protected]:/usr/local/
啟動 nimbus、supervisor、ui
cd /usr/local/storm/bin
./storm nimbus
./storm supervisor
./storm ui
Storm常用命令
1、任務提交命令:storm jar 【jar路徑】 【拓撲包名.拓撲類名】 【拓撲名稱】
storm jar /export/servers/storm/examples/storm-starter/storm-starter-topologies-1.0.3.jar org.apache.storm.starter.WordCountTopology wordcount
與hadoop不同的是:不需要指定輸入輸出路徑 如:hadoop jar /usr/local/wordcount.jar /data.txt /wcout
##殺死任務命令格式:storm kill name -w seconds storm kill wordcount -w 10 ##停用任務命令格式:storm deactivte name storm deactivte wordcount ##啟用任務命令格式:storm activate name storm activate wordcount ##平衡任務命令格式:storm rebalance name storm rebalance wordcount
Storm配置運行