Storm叢集環境搭建(1個nimbus+2個supervisor)
Storm是開源的一個分散式實時計算系統,用於資料的實時分析,持續計算,分散式RPC、線上機器學習、ETL等。例如,在電商購物網站購買商品時,會在網頁旁邊或者底端看到與自己所需要商品相關的系列商品,這就是使用類似Storm實時計算去做的。Hadoop適用於海量資料的離線資料分析,無法做到實時分析計算。
Storm系統的設計保證了訊息能得到快速的處理,使用ZeroMQ作為其底層訊息佇列。Storm有一個"本地模式",可以在處理過程中完全模擬Storm叢集,可以使我們快速進行開發和單元測試。Storm支援水平擴充套件,具有高容錯性,保證每個訊息都會得到處理,而且處理速度很快,在一個小叢集中,,每個結點每秒可以處理數以百萬計的訊息。Storm的部署和運維都很便捷,可以使用任意程式語言來開發應用。
下圖為Hadoop和Storm的簡單對比
Storm的架構結構圖
Nimbus主節點:通常執行一個後臺程式Nimbus,用於響應分佈在叢集中的節點,分配任務和監測故障,類似於Hadoop中的Job Tracker。
Supervisor工作節點:執行一個後臺程式Supervisor,接收Nimbus分配的任務,管理屬於自己的worker程序。每個工作節點都是topology中一個子集的實現。而Nimbus和Supervisor之間的協調則通過Zookeeper系統或者叢集。
Zookeeper:完成Supervisor和Nimbus之間協調的服務。而應用程式實現實時的邏輯則被封裝到Storm中的topology
Topology:Storm中執行的一個實時應用程式,因為各個元件間的訊息流動形成邏輯上的一個拓撲結構。一個topology是spouts和bolts組成的圖,通過stream groupings將圖中的spouts和bolts連線起來。
Storm所使用的容器是jetty,底層通訊使用netty,zookeeper使用的是Curator。
Storm環境搭建
Zookeeper叢集包括3臺機器:192.168.0.217、192.168.0.218、192.168.0.219
3臺Storm機器IP:192.168.0.222、192.168.0.223、192.168.0.224,關閉防火牆,並修改/etc/hosts配置,安裝JDK1.8並配置環境變數
修改/etc/hosts配置
vim /etc/hosts
配置環境變數
vim /etc/profile
新增
export JAVA_HOME=/usr/local/localsoftware/jdk1.8.0_121
export PATH=$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
執行source /etc/profile 使環境變數立即生效
安裝python
下載3.6.4版本
下載Python-3.6.4.tgz,並分別上傳到192.168.0.222、192.168.0.223、192.168.0.224
執行下面指令解壓Python
tar -zxvf Python-3.6.4.tgz
cd Python-3.6.4
./configure --prefix=/usr/local/Python-3.6.4
make
sudo make install
Storm安裝
下載Storm安裝包,並分別上傳到192.168.0.222、192.168.0.223、192.168.0.224
解壓
tar -zxvf apache-storm-1.2.1.tar.gz -C /usr/local/
配置Storm的環境變數
vim /etc/profile
新增
export STORM_HOME=/usr/local/apache-storm-1.2.1
修改
export PATH=$JAVA_HOME/bin:$STORM_HOME/bin:$PATH
執行指令使環境變數立即生效 source /etc/profile
修改Storm的conf目錄下的配置檔案storm.yaml
vim storm.yaml
配置Storm叢集使用的Zookeeper服務
注意上圖中箭頭位置的空格,不要去掉,否則可能會導致Storm無法正常啟動
建立data資料夾
mkdir /usr/local/apache-storm-1.2.1/data
啟動Storm叢集
首先,啟動Zookeeper叢集
cd /usr/local/zookeeper
其次,啟動Storm叢集
主機器192.168.0.222 從機器:192.168.0.223、192.168.0.224
主機器(nimbus): storm nimbus &
從機器(supervisor): storm supervisor &
主機器ui執行: storm ui &
主機器logviewer執行: storm logviewer &
檢視啟動日誌資訊
192.168.0.222 nimbus
192.168.0.223 supervisor
檢視192.168.0.222 nimbus中的ui.log
vim ui.log
從上圖可以看出,Storm的管控臺ui使用的Server為jetty
在瀏覽器中訪問http://192.168.0.222:18080/ ,可以檢視storm的一些叢集配置