天天看點

《Storm企業級應用:實戰、運維和調優》——2.3 安裝部署Storm叢集

本節書摘來自華章計算機《storm企業級應用:實戰、運維和調優》一書中的第2章,第2.3節,作者:馬延輝 陳書美 雷葆華著, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

storm的安裝、部署過程分為安裝依賴、安裝storm、啟動和檢視安裝等幾個部分。其中,前兩部分内容在三個節點上都是一樣的,隻要在啟動時區分開角色即可。接下來将講解storm叢集的安裝過程。

2.3.1 安裝storm依賴庫

在nimbus和supervisor的節點上安裝storm時,都需要安裝相關的依賴庫,具體如下:

zeromq 2.1.7。

jzmq。

其中,zeromq推薦使用2.1.7版本,請勿使用2.1.10版本。官方解釋是因為該版本的一些嚴重bug會導緻storm叢集運作時出現奇怪的問題。另外,以上依賴庫的版本經過storm官方測試,但不能保證在其他版本的java或python庫下可運作。

1.?安裝zeromq

storm底層隊列的實作使用zeromq,為了實作低耦合,storm并沒有将zeromq放置到其工程中,是以需要預先安裝。先下載下傳源碼,然後編譯安裝zeromq,指令如下:

1)其中./conf?igure時會檢查java_home是否正确,不正确會報錯,并提示。

2)如果安裝過程報錯uuid找不到,則通過如下的指令安裝uuid庫:

如遇到報錯“error:cannot link with -luuid, install uuid-dev”,則安裝部分依賴包:

當然,以上的依賴工具安裝指令使用的是yum,不同的linux分支使用不同的安裝指令,例如ubuntu使用apt-get。使用者根據自己選用的作業系統來選用不用的指令,可能有些依賴工具在不同的linux系統上對應的名稱不太一緻,但是總能找到對應的依賴包。

2.?安裝jzmq

jzmq是zeromq的java語言的綁定實作,因為安裝過程中使用unzip指令,首先要使用yum等的安裝工具安裝unzip工具。然後根據下面的代碼一步一步下載下傳、配置、編譯和安裝jzmq。

2.3.2 安裝storm叢集

下面介紹storm 0.8.2的詳細安裝過程。

1.?下載下傳并解壓storm 0.8.2

在nimbus和supervisor節點上安裝storm發行版本。nimbus安裝在test1節點上,supervisor安裝在test2和test3節點上。這些節點的配置檔案完全相同。直接在<code>http://storm-project.net/downloads.html</code>頁面下載下傳0.8.2版本,如圖2-1所示。

《Storm企業級應用:實戰、運維和調優》——2.3 安裝部署Storm叢集

也可以在用戶端節點下載下傳後複制到叢集節點,或在用戶端複制連結位址後在叢集節點使用wget指令下載下傳。在完成下載下傳或複制後,将壓縮包解壓,指令如下:

2.?修改storm.yaml配置檔案

storm發行版本解壓目錄下有一個conf/storm.yaml檔案,用于配置storm。可以在這裡檢視預設配置。conf/storm.yaml中的配置選項将覆寫defaults.yaml中的預設配置。以下最基本的配置選項必須在conf/storm.yaml中配置。

1)storm.zookeeper.servers: storm叢集使用的zookeeper叢集位址,格式如下:

如果zookeeper叢集使用的不是預設端口,那麼還需要storm.zookeeper.port選項。

2)storm.local.dir: nimbus和supervisor程序用于存儲少量狀态,如jar、配置檔案等的本地磁盤目錄,需要提前建立該目錄并給以足夠的通路權限,然後在storm.yaml中配置該目錄,代碼如下:

3)nimbus.host: storm叢集nimbus機器位址,各個supervisor工作節點需要知道哪個節點是nimbus,以便下載下傳topology的jar、配置等檔案,代碼如下:

當然這幾項配置都是最基本的配置選項,其他的配置選項都在defaults.yaml檔案中,該檔案的詳細内容如下,供讀者參考使用。

2.3.3 啟動storm叢集

最後一步,啟動storm的所有背景程序。和zookeeper一樣,storm也是快速失敗(fail-fast)的系統,能在任意時刻被停止,并且當程序重新開機後能夠正确恢複執行。這也是為什麼storm不在程序内儲存狀态的原因,即使重新開機nimbus或supervisor程序,運作中的topology不會受到影響。

首先,還是因為需要使用hadoop使用者啟動程序,需要更改檔案權限,指令如下:

下面介紹啟動storm各個背景程序的方式。

nimbus:在storm主要節點上運作(即test1節點),啟動nimbus背景程式,并放到背景執行。

supervisor:在storm各個工作節點上運作(即test2、test3節點),啟動supervisor背景程式,并放到背景執行。

ui:在storm主要節點上運作,啟動ui背景程式,并放到背景執行,啟動後可以通過<code>http://{nimbus host}:8080</code>觀察叢集的worker資源使用情況、topology的運作狀态等資訊,啟動指令如下。啟動後通過浏覽器可以檢視目前storm叢集的目前狀态,成功啟動後的storm ui界面如圖2-2所示。

《Storm企業級應用:實戰、運維和調優》——2.3 安裝部署Storm叢集

經測試,storm ui必須和storm nimbus部署在同一台機器上,否則ui無法正常工作,因為ui程序會檢查本機是否存在nimus連接配接。

下面簡單介紹storm ui頁面上的各項屬性。

1.?cluster summary叢集統計資訊

version:storm叢集的版本。

nimbus uptime:nimbus的啟動時間。

supervisors:storm叢集中supervisor的數量。

used slots:使用的slot數。

free slots:剩餘的slot數。

total slots:總的slot數。

executors:執行者數量。

tasks: 運作的任務數。

2.?topology summary拓撲統計資訊

name:拓撲的名稱。

id:由storm生成的拓撲id。

status:拓撲的狀态,包括active、inactive、killed、rebalancing等。

uptime:拓撲運作的時間。

num workers:運作的worker數。

num executors:運作的執行者數。

num tasks:運作的task數。

3.?supervisor summary工作節點統計資訊

host:supervisor主機名。

id:由storm生成的工作節點id。

uptime:supervisor啟動的時間。

slots:supervisor的slot數。

經測試,storm ui必須和nimbus服務部署在同一節點上,否則ui無法正常工作,因為ui程序會檢查本機是否存在nimbus連接配接。至此,storm叢集部署、配置完成,可以向叢集送出拓撲。

2.3.4 停止storm叢集

在本地模式下停止叢集的方式比較簡單,就是調用shutdown方法,代碼如下:

分布式模式停止叢集的方式比較麻煩,因為角色程序分布在不同的節點上。停止的方法是,直接殺掉每個節點運作的nimbus或者supervisor程序。目前storm官網上提供了一個項目可以快速關閉storm叢集。

繼續閱讀