storm jar 【jar路徑】 【拓撲包名.拓撲類名】 【拓撲名稱】安全
JAR:storm jar topology_jar topology_class [arguments...]
jar命令是用於提交一個集羣拓撲.它運行指定參數的topology_class中的main()方法,上傳topology_jar到nimbus, 由nimbus發佈到集羣中。一旦提交,storm將激活拓撲並開始處理topology_class 中的main()方法,main()方法負責調用StormSubmitter.submitTopology()方法,並提供一個惟一的拓撲(集羣)的 名。若是一個擁有該名稱的拓撲已經存在於集羣中,jar命令將會失敗。常見的作法是在使用命令行參數來指定拓撲名稱,以便拓撲在提交的時候被命名。
KILL:storm kill topology_name [-w wait_time]
殺死一個拓撲,可使用kill命令。它會以一種安全的方式銷燬一個拓撲,首先停用拓撲,在等待拓撲消息的時間段內容許拓撲完成當前的數據流。執行 kill命令時能夠經過-w [等待秒數]指定拓撲停用之後的等待時間。也能夠在Storm UI 界面上實現一樣的功能
Deactivate:storm deactivate topology_name
停用拓撲時,全部已分發的元組都會獲得處理,spouts的nextTuple方法將不會被調用。也能夠在Storm UI 界面上實現一樣的功能
Activate:storm activate topology_name
啓動一個停用的拓撲。也能夠在Storm UI 界面上實現一樣的功能 分佈式
(1)Storm提交後,會把代碼首先存放到Nimbus節點的inbox目錄下,以後,會把當前Storm運行的配置生成一個 stormconf.ser文件放到Nimbus節點的stormdist目錄中,在此目錄中同時還有序列化以後的Topology代碼文件
(2) 在設定Topology所關聯的Spouts和Bolts時,能夠同時設置當前Spout和Bolt的executor數目和task數目,默認狀況下, 一個Topology的task的總和是和executor的總和一致的。以後,系統根據worker的數目,儘可能平均的分配這些task的執行。 worker在哪一個supervisor節點上運行是由storm自己決定的
(3)任務分配好以後,Nimbus節點會將任務的信息提交到zookeeper集羣,同時在zookeeper集羣中會有workerbeats節點,這裏存儲了當前Topology的全部worker進程的心跳信息
(4)Supervisor 節點會不斷的輪詢zookeeper集羣,在zookeeper的assignments節點中保存了全部Topology的任務分配信息、代碼存儲目 錄、任務之間的關聯關係等,Supervisor經過輪詢此節點的內容,來領取本身的任務,啓動worker進程運行
(5)一個Topology運行以後,就會不斷的經過Spouts來發送Stream流,經過Bolts來不斷的處理接收到的Stream流,Stream流是無界的。
最後一步會不間斷的執行,除非手動結束Topology。
ui
在開始建立項目以前,瞭解Storm的操做模式(operation modes)是很重要的。 Storm有兩種運行方式
本地運行的提交方式,例:
LocalCluster cluster = new LocalCluster();
cluster.submitTopology(TOPOLOGY_NAME, conf, builder.createTopology());
Thread.sleep(2000);
cluster.shutdown();
分佈式提交方式,例:
StormSubmitter.submitTopology(TOPOLOGY_NAME, conf, builder.createTopology());
spa