主机上安装的是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。