1. 程式人生 > >Storm配置運行

Storm配置運行

star seed .tar.gz baidu slot out Superviso 所有 example

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配置運行