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。

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