ArchLinux上搭建Twitter Storm平臺

主機上安裝的是64位的Arch系統,相關的CPU信息和內存信息如下:

4  Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz

MemTotal:       16322984 kB
MemFree:        14513576 kB
Buffers:          136332 kB
Cached:          1393720 kB

基本依賴環境

由於系統剛裝不久,所以這次的搭建過程幾乎是從零開始,包括gcc,python,jdk等,都需要自己安裝,但是這些還都比較簡單。唯一需要注意一點的是,Arch上默認安裝的python版本是python3,但是Storm是基於python2開發的,在python3上會存在一些兼容性的問題,所以建議大家安裝python2。

sudo pacman -S python2

安裝zookeeper

  • 下載zookeeper-3.3.3.tar.gz (wget http://apache.etoak.com//zookeeper/zookeeper-3.4.3/zookeeper-3.4.3.tar.gz)
  • tar zxf zookeeper-3.3.3.tar.gz
  • cp -R zookeeper-3.3.3 /usr/local/
  • ln -s /usr/local/zookeeper-3.3.3/ /usr/local/zookeeper
  • vim ~./bashrc (設置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)
  • sudo mkdir /tmp/zookeeper
  • sudo mkdir /var/log/zookeeper
至此,zookeeper在單機上的配置就已經完成了,如果是集羣上的搭建,到最後還需要修改相關的配置文件。

安裝ZeroMQ

開始安裝ZeroMQ前應該先檢查自己的系統上是否已經安裝了autoconf,automake和libtool,如果沒有,直接通過以下指令安裝。
sudo pacman -S pkg-config automake autoconf libtool

  • wget http://download.zeromq.org/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)

安裝JZMQ

安裝ZeroMQ的過程中沒有遇到什麼問題,但是安裝JZMQ的時候遇到不少問題,糾結了挺久,以下是安裝步驟
  • git clone git://github.com/nathanmarz/jzmq.git
  • cd jzmq
  • ./autogen.sh
  • ./configure
  • make
  • make install
上面的是主要的安裝步驟,但是我在安裝的過程中遇到了一些問題:
執行./autogen.sh
 error: possibly undefined macro: AC_PROG_LIBTOOL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1

這個問題,Google上搜到的說法都說是需要安裝libtool,但是我當時的機器上已經安裝了libtool
libtool:	(GNU libtool) 2.4.2
automake:	automake (GNU automake) 1.11
autoconf:	autoconf (GNU Autoconf) 2.69
最後才發現是需要進入jzmq的目錄下執行libtoolize操作,具體原因我現在還不大清楚,不過這個問題糾結了挺久!
執行./configure

checking how to hardcode library paths into programs... immediate
./configure: line 15263: syntax error near unexpected token `newline'
./configure: line 15263: `    PKG_CHECK_MODULES('

這個問題在Mac上好像比較普遍,http://stackoverflow.com/questions/3522248/how-do-i-compile-jzmq-for-zeromq-on-osx 這個鏈接上有不少的討論,PKG_CHECK_MODULES 是定義在pkg.m4文件,出現這個問題的原因是automake沒法定位到pkg.m4,但是我查了/usr/share/aclocal/目錄後發現pkg.m4已經在該目錄下,當時感覺非常奇怪,後來開始在系統上查找aclocal的相關目錄,發現在/usr/local/share/aclocal-1.11/目錄下缺少了pkg.m4文件,於是將/usr/share/aclocal/目錄下的pkg.m4文件cp到/usr/local/share/aclocal-1.11/目錄下,重新執行./configure,終於成功了!

安裝Storm

  • 下載storm-0.7.1.zip
  • unzip storm-0.7.1.zip
  • sudo cp -R storm-0.7.1 /usr/local/
  • vim ~/.bashrc
    追加export STORM_HOME=/usr/local/storm-0.7.1
export PATH=$PATH:$STORM_HOME/bin
這一步沒遇到什麼問題。

運行測試代碼

我是直接用Eclipse導出jar包,然後直接提交到storm上運行
storm-starter.jar storm.starter.WordCountTopology
由於Storm是基於python2進行開發的,我一開始配置python環境的時候arch默認直接安裝python3,python3和python2之間存在一些兼容性的問題,所以一開始運行的時候可能會遇到一些問題(可以使用 2to3-3.3 -w storm 將python2的storm代碼轉爲python3,但是還是會有問題)。
TypeError: Can't convert 'NoneType' object to str implicitly

所以還是比較建議直接用python2。

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