一、簡介
Apache Storm分佈式集羣主要節點由控制節點(Nimbus節點)和工作節點(Supervisor節點),控制節點可以一個,工作節點多個組成的,而Zookeeper主要負責Nimbus節點和Supervisor節點之間的協調工作。
Nimbus: Nimbus節點負責資源分配和任務分配我們運行拓撲,通過命令storm jar提交拓撲,會提交到Nimbus,Nimbus分發任務給Supervisor,並監控着Supervisor狀態,如果Supervisor掛起,會把任務重新分給其它Supervisor。
Supervisor:Supervisor節點定期接受Nimbus節點分配任務,並會從Nimbus下載代碼,並啓動對應的worker進程,並監控着worker的心跳,如果worker因內存溢出或者其它原因導致worker掛掉,Supervisor會重新啓動worker。
Storm ui是storm集羣的監控頁面,可以查看Nimbus、Supervisor分佈情況以及狀態等信息,方便我們管理Storm集羣以及拓撲。
二、Storm 集羣部署
1、兩個虛擬機:192.168.2.200、192.168.2.201
1)Storm 下載地址:http://storm.apache.org/downloads.html ,我下載的是版本apache-storm-1.1.0.tar.gz
2)對兩個虛擬機分別解壓
> tar -xzf apache-storm-1.1.0.tar.gz
> cd apache-storm-1.1.0/conf
2、配置 conf/storm.yaml 文件
1)配置連接zookeeper的地址,默認端口是2181,可以修改對應的zookeeper端口
storm.zookeeper.port
storm.zookeeper.servers:
- "Master"
- "Salve2"
2)配置nimbus的地址
nimbus.seeds: ["Master"]
3)配置nimbus
配置supervisor節點上每個worker使用的監聽端口,每個worker都有一個獨立監聽端口,一個supervisor默認4個端口。
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
4)配置ui端口
ui.port: 8081
3、Storm的集羣的狀態信息(Nimbus分發的任務、Supervisor、worker的心跳等)都保存在Zookeeper上,通過zookeeper的分佈式系統協調來保證Storm集羣的穩定性。Zookeeper的安裝配置、並啓動zookeeper。
4、zookeeper集羣先啓動,然後啓動192.168.2.200、192.168.2.201虛擬機上的storm的ui、nimbus、supervisor。
>bin/storm nimbus >/dev/null 2>&1 &
>bin/storm supervisor >/dev/null 2>&1 &
>bin/storm ui >/dev/null 2>&1 &
我們訪問storm管理頁面http://ip:端口/index.html,Storm ui是storm集羣的監控頁面,可以查看Nimbus、Supervisor分佈情況以及狀態等信息,方便我們管理Storm集羣以及拓撲
三、問題
org.apache.storm.utils.NimbusLeaderNotFoundException: Could not find leader nimbus from seed hosts ["192.168.2.200"]. Did you specify a valid list of nimbus hosts for config nimbus.seeds?
刪除zookeeper對應的storm信息,並重啓zookeeper就可以了
第一:先登錄zookeeper
>bin/zkCli.sh
第二步:刪除對應的storm