主機上安裝的是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 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
安裝ZeroMQ
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
- git clone git://github.com/nathanmarz/jzmq.git
- cd jzmq
- ./autogen.sh
- ./configure
- make
- make install
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操作,具體原因我現在還不大清楚,不過這個問題糾結了挺久!checking how to hardcode library paths into programs... immediate
./configure: line 15263: syntax error near unexpected token `newline'
./configure: line 15263: ` PKG_CHECK_MODULES('
安裝Storm
- 下載storm-0.7.1.zip
- unzip storm-0.7.1.zip
- sudo cp -R storm-0.7.1 /usr/local/
- vim ~/.bashrc
export PATH=$PATH:$STORM_HOME/bin
運行測試代碼
TypeError: Can't convert 'NoneType' object to str implicitly
所以還是比較建議直接用python2。