準備三臺服務器,角色分配以下:java
yun01:Zookeeper、nimbus。web
yun02:Zookeeper、supervisor。後端
yun03:Zookeeper、supervisor。bash
略服務器
參見: Zookeeper集羣的搭建ui
解壓安裝包便可spa
修改$STORM_HOME/conf目錄下的storm.yaml文件。.net
storm.zookeeper.services:命令行
配置zookeeper集羣的主機名稱。code
nimbus.host:
指定了集羣中nimbus的節點。
supervisor.slots.ports:
配置控制每一個supervisor節點運行多少個worker進程。這個配置定義爲worker監聽的端口的列表,監聽端口的個數控制了supervisor節點上有多少個worker的插槽。默認的storm使用6700~6703端口,每一個supervisor節點上有4個worker插槽。
storm.local.dir:
storm工做時產生的工做文件存放的位置,注意,要避免配置到/tmp下。
配置樣式以下:
#Zookeeper集羣的ip地址或者主機名 storm.zookeeper.services: - "yun01" - "yun02" - "yun03" #主節點的ip或者主機名 nimbus.host: "yun01" #個節點的工做端口 supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703 #產生文件存儲位置 storm.local.dir: "/home/software/storm/tmp"
注意:每行主要語句開始的時候不要有空格,不然會有意想不到的錯誤發生。
nimbus.childopts(default: -Xms1024m):
這項JVM配置會添加在啓動nimbs守護進程的java命令行中。
ui.port(default:8080):
這項配置指定了Storm UI的Web服務器監聽的端口。
ui.childopts(default:-Xms1024m):
這項JVM配置會添加在StormUI服務啓動的Java命令行中。
supervisor.childopts(default:-Xms768m):
這項JVM配置會添加Supervisor服務啓動的Java命令行中。
worker.childopts(default:-Xms768m):
這項JVM配置會添加worker服務啓動的Java命令行中。
topology.message.timeout.secs(default:30):
這個配置項定義了一個tuple樹須要應答最大時間秒數限制,超過這個時間則認爲超時失敗。
topology.max.spout.pending(default:null):
在默認值null的狀況下,spout每當產生新的tuple時會當即向後端發送,因爲下游bolt執行可能具備延遲,可能致使topology過載,從而致使消息處理超時。若是手動將該值改成非null正整數時,會經過暫停spout發送數據來限制同時處理的tuple不能超過這個數,從而達到爲Spout限速的做用。
topology.enable.message.timeouts(default:true):
這個選項用來錨定的tuple的超時時間。若是設置爲false,則錨定的tuple不會超時。
在啓動storm以前確保storm使用的zookeeper已經啓動且可使用。
storm nimbus
啓動nimbus守護進程。
storm supervisor
啓動supervisor守護進程。
storm ui
啓動stormui的守護進程,從而能夠經過webUI界面來監控storm運行過程。
storm drpc
啓動一個DRPC服務守護進程。
storm jar topology_jar topology_class[arguments...]
向集羣提交topology。它會使用指定的參數運行topology_class中的main()方法,同時上傳topology_jar文件到nimbus以分發到整個集羣。提交後,Storm集羣會激活而且開始運行topology。topology中的main()方法須要調用StormSubmitter.submitTopology()方法,而且爲topology提供集羣內惟一的名稱。
storm kill topology_name[-w wait_time]
用來關閉已經部署的topology。
storm deactivate topology_name
中止指定topology的spout發送tuple
storm activate topology_name
恢復指定topology的spout發送tuple。
storm rebalance topology_name[-w wait_time][-n worker_count][-e component_name=executor_count]
指定storm在集羣的worker之間從新平均地分配任務,不須要關閉或者從新提交現有的topology。當執行rebalance命令時,Storm會先取消激活topology,等待配置的的時間使剩餘的tuple處理完成,而後再supervisor節點中均勻的從新分配worker。從新分配後,Storm會將topology恢復到以前的激活狀態。
storm remoteconfvalue conf-name
用來查看遠程集羣中的配置參數值。
案例:改造以前的單詞計數案例,將其在集羣中運行。
修改提交topology的代碼:
StormSubmitter.submitTopology("mywc", conf, topology);
將程序打成jar包,同時設置jar包的主類,將jar包上傳到集羣中。
經過命令執行jar包:
storm jar /root/work/stormwc.jar cn.tedu.storm.wc.WordCountTopology
執行一段時間後,能夠經過若是下命令關閉topology
storm kill mywc
個人博客即將搬運同步至騰訊雲+社區,邀請你們一同入駐:
https://cloud.tencent.com/developer/support-plan