Twitter Storm 系統(tǒng)集群搭建
Storm是什么?
Storm是Twitter開(kāi)源的一個(gè)分布式的實(shí)時(shí)計(jì)算系統(tǒng)
使用場(chǎng)景:
數(shù)據(jù)的實(shí)時(shí)分析、持續(xù)計(jì)算、分布式RPC等等。
Storm特點(diǎn)(Storm類似手扶電梯,不出故障就會(huì)一直運(yùn)行,hadoop類似升降電梯,到達(dá)一定程度會(huì)停止。):
- 分布式
- 可擴(kuò)展
- 高可靠性
- 編程模型簡(jiǎn)單
- 高效實(shí)時(shí)
常用的類:
- BaseRichSpout(消息生產(chǎn)者)
- BaseBasicBolt(消息處理者)
- TopologyBuilder(拓?fù)涞臉?gòu)建器)
- Config(配置)
- StormSubmitter/LocalCluster(拓?fù)涮峤黄?
Storm集群部署
Storm集群架構(gòu):
如圖:
在Storm的集群里面有兩種節(jié)點(diǎn):控制節(jié)點(diǎn)和工作節(jié)點(diǎn)。
控制節(jié)點(diǎn)上面運(yùn)行一個(gè)叫Nimbus進(jìn)程,Nimbus負(fù)責(zé)在集群里面
分發(fā)代碼,分配計(jì)算任務(wù),并且監(jiān)控狀態(tài)。
每一個(gè)工作節(jié)點(diǎn)上面運(yùn)行一個(gè)叫做Supervisor進(jìn)程。
Supervisor負(fù)責(zé)監(jiān)聽(tīng)從Nimbus分配給它執(zhí)行的任務(wù),據(jù)此啟動(dòng)或停止執(zhí)行任務(wù)的工作進(jìn)程。
Nimbus和Supervisor之間的所有協(xié)調(diào)工作都是通過(guò)Zookeeper集群完成。
集群規(guī)劃:(根據(jù)具體需求規(guī)劃)
linux主機(jī)名 Storm角色 Zookeeper master Nimubus 單節(jié)點(diǎn)zk slave01 Supervisor slave02 Supervisor
準(zhǔn)備工作:
環(huán)境:centos6.4
軟件:
jzmq-master storm-0.8.2 zeromq-2.1.7 zookeeper-3.4.5
環(huán)境配置:(參見(jiàn)前幾篇博客)
Linux基本配置:
- 修改主機(jī)名
- 修改IP
- 修改主機(jī)和IP的映射關(guān)系
- 關(guān)閉防火墻
安裝步驟:
1.安裝jdk
2.搭建Zookeeper集群(這里我們只安裝一個(gè)zk在主節(jié)點(diǎn)上)
- 解壓
進(jìn)入zk的conf目錄下,cp zoo_sample.cfg zoo.cfg(修改一下名字),其它的暫時(shí)都不變
3.安裝Storm依賴(zeromq、jzmq、python)
3.1安裝zeromq,然后進(jìn)入到zeromq-2.1.7/目錄下
檢測(cè)環(huán)境:./configure cd zeromq-2.1.7 ./configure
#編譯可能會(huì)出錯(cuò):
configure: error: Unable to find a working C++ compiler
#安裝一下依賴的rpm包:
libstdc++-devel gcc-c++
虛擬機(jī)可以上網(wǎng)的情況下:(建議使用此方法)
yum install gcc-c++
虛擬機(jī)不能上網(wǎng)情況:
首先到http://mirrors.163.com/centos/6.4/os/x86_64/Packages/(下載的版本一定要和系統(tǒng)對(duì)應(yīng))
rpm -i libstdc++-devel-4.4.7-3.el6.x86_64.rpm rpm -i gcc-c++-4.4.7-3.el6.x86_64.rpm rpm -i libuuid-devel-2.17.2-12.9.el6.x86_64.rpm
然后運(yùn)行./configure
make(編譯)
make install(這個(gè)才徹底安裝)
3.2.編譯安裝JZMQ:
cd jzmq
執(zhí)行./autogen.sh(是為了讓它產(chǎn)生配置文件,默認(rèn)沒(méi)有配置文件的),
#報(bào)錯(cuò):autogen.sh: error: could not find libtool. libtool is required to run autogen.sh. 缺少libtool
同樣,可上網(wǎng)情況下:
yum install libtool(readhat企業(yè)版不會(huì)出現(xiàn)這些報(bào)錯(cuò))
或者手動(dòng)安裝:
rpm -i autoconf-2.63-5.1.el6.noarch.rpm rpm -i automake-1.11.1-4.el6.noarch.rpm rpm -i libtool-2.2.6-15.5.el6.x86_64.rpm ./configure make make install
3.33.編譯安裝Python(先確定你系統(tǒng)自帶的版本,如果是2.6.6或者之上的不需要安裝)
tar –zxvf Python-2.6.6.tgz cd Python-2.6.6 ./configure make make install
3.4安裝storm
修改storm.yaml配置文件(子節(jié)點(diǎn)上也得修改) 修改zk對(duì)應(yīng)的主機(jī)名 修改主節(jié)點(diǎn)對(duì)應(yīng)的主機(jī)名
PS:
3.41 Storm發(fā)行版本解壓目錄下有一個(gè)
conf/storm.yaml文件:
用于配置Storm。默認(rèn)配置在這里可以查看conf/storm.yaml中的配置選項(xiàng)將覆蓋defaults.yaml中的默認(rèn)配置。
以下配置選項(xiàng)是必須在conf/storm.yaml中進(jìn)行配置的:
storm.zookeeper.servers:
Storm集群使用的Zookeeper集群地址,
其格式如下:
storm.zookeeper.servers: - "111.222.333.444" - "555.666.777.888"
如果Zookeeper集群使用的不是默認(rèn)端口,那么還需要storm.zookeeper.port選項(xiàng)。
3.42 storm.local.dir: Nimbus和Supervisor進(jìn)程
用于存儲(chǔ)少量狀態(tài),如jars、confs等的本地磁盤目錄,需要提前創(chuàng)建該目錄并給以足夠的訪問(wèn)權(quán)限。
然后在storm.yaml中配置該目錄,如:
storm.local.dir: "/usr/storm/workdir"
分別啟動(dòng)三臺(tái)機(jī)器,master:到storm的bin目錄下:
./storm nimbus > /dev/null 2>&1 &
slave01:到storm的bin目錄下:
./storm supervisor > ../logs/su.log 2>&1 &
slave02:到storm的bin目錄下:
./storm supervisor > ../logs/su.log 2>&1 &
(啟動(dòng)后臺(tái)進(jìn)程,并把正確和錯(cuò)誤的信息輸出到該文件中)
在master上啟動(dòng)UI管理界面
./storm ui > /dev/null 2>&1 &
通過(guò)瀏覽器觀察:(主節(jié)點(diǎn)的ip:8080),觀察集群的worker資源使用情況、Topologies的運(yùn)行狀態(tài)等信息。
至此,Storm集群已經(jīng)部署、配置完畢,可以向集群提交拓?fù)溥\(yùn)行了。