Storm安裝配置(單機版)筆記

本篇幅講述Twitter Storm安裝配置,也作爲自己的筆記。

storm的官方安裝說明(e文):https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster

storm的安裝分爲單機版和集羣版,只是配置稍微有點區別,大致一樣。

要使用storm首先要安裝以下工具:

python、zookeeper、zeromq、jzmq、storm

 

第一步,安裝Python2.7.2
wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz
tar zxvf Python-2.7.2.tgz
cd Python-2.7.2
./configure
make
make install
vi /etc/ld.so.conf
追加/usr/local/lib/
sudo ldconfig

 

第二步,安裝zookeeper   
wget http://labs.mop.com/apache-mirror/zookeeper/zookeeper-3.3.5/zookeeper-3.3.5.tar.gz
tar -zxvf zookeeper-3.3.5.tar.gz 
cp -R zookeeper-3.3.5 /usr/local/
ln -s /usr/local/zookeeper-3.3.5/ /usr/local/zookeeper
vim /etc/profile (設置ZOOKEEPER_HOME和ZOOKEEPER_HOME/bin) 
export ZOOKEEPER_HOME="/path/to/zookeeper"
export PATH=$PATH:$ZOOKEEPER_HOME/bin
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg (用zoo_sample.cfg製作$ZOOKEEPER_HOME/conf/zoo.cfg)
mkdir /tmp/zookeeper
mkdir /var/log/zookeeper
zookeeper的單機安裝已經完成了。

 

第三步,安裝zeromq以及jzmq
jzmq的安裝貌似是依賴zeromq的,所以應該先裝zeromq,再裝jzmq。
1)安裝zeromq:
wget http://download.zeromq.org/historic/zeromq-2.1.7.tar.gz
tar zxf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
make install
sudo ldconfig (更新LD_LIBRARY_PATH)


運行./configure 之前先運行以下命令:
LD_LIBRARY_PATH=/home/gpadmin/real-time/storm-other/zeromq-2.1.7/lib

zeromq安裝完成。
注意:如有有依賴報錯,需要安裝:
jzmq dependencies 依賴包
sudo yum install uuid*
sudo yum install libtool
sudo yum install libuuid 
sudo yum install libuuid-devel
2)安裝jzmq
yum install git 
git clone git://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure (如果失敗,請用 ./configure --with-zeromq=/home/gpadmin/real-time/storm-other/zeromq-2.1.7
make
make install
然後,jzmq就裝好了.


如有異常,常識一下命令:

export ZEROMQ_HOME="/home/gpadmin/real-time/storm-other/zeromq-2.2.0"
export CPPFLAGS=-I/home/gpadmin/real-time/storm-other/zeromq-2.2.0/include/
export LDFLAGS=-L/home/gpadmin/real-time/storm-other/zeromq-2.2.0/lib/
export PATH=$PATH:$ZEROMQ_HOME/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ZEROMQ_HOME/include


加入到/etc/profile 中
export PATH=$PATH:/home/gpadmin/real-time/storm-other/zeromq-2.1.7/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gpadmin/real-time/storm-other/zeromq-2.1.7/lib:/home/gpadmin/real-time/storm-other/zeromq-2.1.7/include



注意:在./autogen.sh這步如果報錯:autogen.sh:error:could not find libtool is required to run autogen.sh,這是因爲缺少了libtool,可以用#yum install libtool*來解決。


第四步,安裝Storm
wget http://cloud.github.com/downloads/nathanmarz/storm/storm-0.8.1.zip
unzip storm-0.8.1.zip
mv storm-0.8.1 /usr/local/
ln -s /usr/local/storm-0.8.1/ /usr/local/storm
vim /etc/profile
export STORM_HOME=/usr/local/storm-0.8.1
export PATH=$PATH:$STORM_HOME/bin
到此爲止單機版的Storm就安裝完畢了。

 

第五步,測試一下本地模式的WordCount
下載storm-starter 編譯,並導入eclipse 工程:
(http://blog.csdn.net/guoqiangma/article/details/7212677)
1. 下載strom starter的代碼 git clone https://github.com/nathanmarz/storm-starter.git
2. 使用mvn -f m2-pom.xml package 進行編譯
3. 複製 storm-starter目錄下的m2_pom.xml 爲pom.xml ,因爲eclipse需要pom.xml
4. 使用mvn eclipse:eclipse編譯成eclipse工程
5. 在Eclipse 中import 選擇storm-starter 的路徑,一般導入項目後,會需要設置相應的M2_查看工程是否無誤,可能會需要配置M2_REPO變量,
M2_REPO配置方法:工程上右鍵->Properties->Java Build Path->Libraries->AddVariable->Configure Variable->New
輸入Name:M2_REPO , Path:localRepository路徑->ok刷新工程,代碼無誤了,可以進行開發了
6. 編譯無誤後,現在本地跑storm.starter目錄下的WordCountTopology,看到如下的截屏,代表本地的local模式可以跑通過
使用eclipse的export功能導出項目的jar包,便於以後分佈式的情況下,提交相應的邏輯

Strom-Starter構建失敗,缺少twitter4j包 的解決辦法:
(http://www.cnblogs.com/zeutrap/archive/2012/10/11/2720528.html)
修改Storm-Starter的pom文件m2-pom.xml ,修改dependency中twitter4j-core 和 twitter4j-stream兩個包的依賴版本,如下:

    org.twitter4j
    twitter4j-core
    [2.2,)


    org.twitter4j
    twitter4j-stream
    [2.2,)

 

要注意上面的本地模式運行WordCount其實並沒有使用到上述安裝的工具,只是一個storm的虛擬環境下測試demo。那我們怎樣將程序運行在剛剛搭建的單機版的環境裏面呢,

很簡單,官方的例子:

注意看官方實例中WordCountTopology類如果不帶參數其實是執行的本地模式,也就是剛說的虛擬的環境,帶上參數就是將jar發送到了storm執行了。

首先弄好環境:

啓動zookeeper:

/usr/local/zookeeper/bin/zkServer.sh  單機版直接啓動,不用修改什麼配置,如集羣就需要修改zoo.cfg另一篇文章會講到。

配置storm:

文件在/usr/local/storm/conf/storm.yaml

內容:
 storm.zookeeper.servers:
     - 127.0.0.1

 storm.zookeeper.port: 2181

 nimbus.host: "127.0.0.1"

 storm.local.dir: "/tmp/storm"

 supervisor.slots.ports:
  - 6700
  - 6701
  - 6702
  - 6703

這個腳本文件寫的不咋地,所以在配置時一定注意在每一項的開始時要加空格,冒號後也必須要加空格,否則storm就不認識這個配置文件了。

說明一下:storm.local.dir表示storm需要用到的本地目錄。nimbus.host表示那一臺機器是master機器,即nimbus。storm.zookeeper.servers表示哪幾臺機器是zookeeper服務器。storm.zookeeper.port表示zookeeper的端口號,這裏一定要與zookeeper配置的端口號一致,否則會出現通信錯誤,切記切記。當然你也可以配superevisor.slot.port,supervisor.slots.ports表示supervisor節點的槽數,就是最多能跑幾個worker進程(每個sprout或bolt默認只啓動一個worker,但是可以通過conf修改成多個)。

執行:

# bin/storm nimbus(啓動主節點)

# bin/storm supervisor(啓動從節點)

執行命令:# storm jar StormStarter.jar storm.starter.WordCountTopology test

此命令的作用就是用storm將jar發送給storm去執行,後面的test是定義的toplogy名稱。

搞定,任務就發送到storm上運行起來了,還可以通過命令:
# bin/storm ui

啓動ui,可以通過瀏覽器, ip:8080/ 查看運行i情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章