Storm集羣搭建

Storm集羣搭建

1、Storm集羣搭建

    準備三臺服務器,角色分配以下:java

    yun01:Zookeeper、nimbus。web

    yun02:Zookeeper、supervisor。後端

    yun03:Zookeeper、supervisor。bash

一、安裝JDK

服務器

二、安裝zookeeper集羣

    參見: Zookeeper集羣的搭建ui

三、安裝Storm

    解壓安裝包便可spa

四、配置Storm

1.storm.yaml

    修改$STORM_HOME/conf目錄下的storm.yaml文件。.net

1>必須修改的項

    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"

    注意:每行主要語句開始的時候不要有空格,不然會有意想不到的錯誤發生。

2>可選的經常使用修改項

    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命令

1.啓動命令

    在啓動storm以前確保storm使用的zookeeper已經啓動且可使用。

storm nimbus

    啓動nimbus守護進程。

storm supervisor

    啓動supervisor守護進程。

storm ui

    啓動stormui的守護進程,從而能夠經過webUI界面來監控storm運行過程。

storm drpc

    啓動一個DRPC服務守護進程。

2.管理命令

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提交到集羣中

    案例:改造以前的單詞計數案例,將其在集羣中運行。

    修改提交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

相關文章
相關標籤/搜索