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