1. 程式人生 > >Linux 下Apache storm 環境搭建

Linux 下Apache storm 環境搭建

Linux 下Apache storm 環境搭建

寫在前面

網上有不少搭建storm環境的方法,我也是從這些方法開始學習storm,但是因為許多部落格的時間都比較久遠,導致了很多的問題,也浪費了不少時間,所以我決定將自己的一些學習經驗分享出來。

Storm的搭建

要搭建一個storm環境,我們首先要做的就是用搜索引擎搜尋一下,不論是百度還是Bing,輸入storm,你都可以找到它的官網所在,如圖:
搜尋結果
接下來,進入官網,找到Download,不論網站的佈局怎麼改變,你總是能在顯眼的地方找到它,不要懷疑,先點它一下,你會看到這個:
點選下載後


在這個介面你會看到很多的版本,選擇你喜歡的,不過我一般選擇最新的。但首先要做的是看到這個圖片中的第一行“Downloads for Apache Storm are below. Instructions for how to set up a Storm cluster can be found here”,它告訴你哪裡可以找到安裝Storm的命令。我們點進去,它大概就長這個樣子:
安裝命令
我們可以看到,它為我們總結了安裝storm叢集的幾個步驟,第一個就是安裝Zookeeper叢集,第二步是在要執行Nimbus和worker的機器上安裝依賴,第三步是在要執行Nimbus和worker的機器上下載並解壓storm,接下來填寫配置檔案,最後就可以使用了。

zookeeper叢集的安裝

我們按照官網給的步驟,首先來按照zookeeper叢集。

還是上一個網頁

還是上一個,網頁,給出了安裝zookeeper的連結,點進去,它大概長這個樣子:
zookeeper
進Getting Started裡看一下,它大概是這樣的:
zookeeper
這個文件說得非常的詳細,先從映象下載一個最近穩定版本的zookeeper,然後解壓出來,解壓之後在conf目錄下建立一個zoo.cfg的文件,文件裡需要填寫的內容也在下面給出來了,複製貼上即可,注意修改dataDir的路徑。第一個tickTime和clientPort不需要我們操心,我們只需要根據我們自己的情況改一下dataDir的路徑就可以了。配置好了以後基本上就可以運行了,為什麼說基本上,因為有可能你還沒有安裝jdk,那你得自己去下載一個,隨便也把python裝了吧,因為第二步就需要jdk和python的支援。然後進入你下載的zookeeper資料夾,執行bin/zkServer.sh start 看一下zookeeper裝好了沒。

Storm的下載和安裝

在這裡插入圖片描述

回到storm,選一個最新的包,下載下來後解壓,解壓以後進入資料夾,修改conf/storm.yaml中的內容

 storm.zookeeper.servers:
    - "127.0.0.1"
 storm.local.dir : "/home/hostname/Strom/stormdir"
# 
# nimbus.seeds: ["host1", "host2", "host3"]
# 
 nimbus.seeds: ["127.0.0.1"]
 supervisor.slots.ports :
     - 6700
     - 6701
     - 6702
     - 6703

第1,2行是執行zookeeper服務的地址,如果你就一臺機器就填本地地址就行。第3行你可以自己新建一個資料夾,填你新建資料夾的地址。這個文件的修改一定要特別注意,比如每一行都不能頂格(我也不知道為什麼),如果格式有問題是會報錯的。

這搞定了之後,按照官網的說法是差不多了,但如果你提交你的程式碼到叢集是跑不起來的,還需要安裝ZMQ和JZMQ。如果不裝這兩個東西會出現問題,我就踩過這個坑,就是你提交你的程式到叢集之後,無法從kafka中獲取到資料,你在storm UI上檢視會顯示無可用資料。先裝ZMQ,這一部分就不截圖了下載連結放在這大家自己下,解壓之後進入資料夾依次輸入命令

sudo ./configure   

sudo make

sudo make install

記得要安裝g++。
接下來是安裝JZMQ,用git clone https://github.com/nathanmarz/jzmq.git 獲取到jamq的軟體包,接下來的操作命令和有可能遇到的問題以及解決辦法我都放在了下面,就不一一講解了
./autogen.sh
autogen.sh: error: could not find libtool. libtool is required to run autogen.sh.
Sudo apt-get install libtool*
autogen.sh: error: could not find autoreconf. autoconf and automake are required to run autogen.sh.
sudo apt-get install autoconf automake libtool
./configure
configure: error: cannot find javah.
將jdk更換為10以下版本
make
No rule to make target ‘classdist_noinst.stamp’, needed by 'org/zeromq/ZMQ.class

錯誤: 找不到 ‘org.zeromq.ZMQ’ 的類檔案。
Makefile:842: recipe for target ‘org_zeromq_ZMQ.h’ failed
cd src
javac -d . org/zeromq/*.java

sudo make install
到這storm的環境就搭建完了。
最後說一下環境變數的搭建,給不會的同學參考一下,在命令列中輸入

sudo gedit /etc/profile

然後在開啟的檔案中新增

#set zookepper env
export ZOOKEEPER_HOME=/home/hostname/Strom/ZooKeeper/zookeeper-3.4.12
export PATH=$PATH:${ZOOKEEPER_HOME}/bin

#set storm env
export STORM_HOME=/home/lhostname/Strom/storm
export PATH=$PATH:${STORM_HOME}/bin

注意 `ZOOKEEPER_HOME和STORM_HOME後面跟的都是你自己的檔案路徑。