安装Storm需要一些依赖软件:
1. uuid-dev
2. ZeroMQ 2.1.7 - Note that you should not install version 2.1.10, as that version has some serious bugs that can cause strange issues for a Storm cluster. In some rare cases, users have reported an "IllegalArgumentException" bubbling up from the ZeroMQ code when using 2.1.7 – in these cases downgrading to 2.1.4 fixed the problem.
3. JZMQ
4. Java 6
5. Python 2.6.6
6. unzip
7. Storm
其中最重要的是1~3,其余一般linux机器上都会安装。
uuid-dev是ZeroMQ所依赖的包,下载地址为https://www.kernel.org/pub/linux/utils/util-linux/v2.21/
ZeroMQ是一个底层的分布式通讯框架,下载地址为http://download.zeromq.org/ 下载2.1.7版本
安装步骤:
1 cd ~/zeromq-2.1.7
2 ./autogen.sh
3 ./configure (如果你没有root或者sudo权限,可以使用./configure --prefix=/home/user-name --exec_prefix=/home/user-name --libdir=/home/user-name/libpath --includedir=/home/user-name/includepath,此前需要在本地环境变量文件.bashrc中配置pkgconfig文件夹路径,例如export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/admin/.lib/pkgconfig,最终libzmq.so会在你指定的libdir中生成)
4 make
5 sudo make install
6. sudo ldconfig 命令会将libzmq.so文件更新到ld.so.cache中(如果你的so包不是安装在标准目录,不用执行此步)
JZMQ是使用Java调用ZeroMQ的代理,下载地址为https://github.com/nathanmarz/jzmq/archive/master.zip
安装步骤:
1 cd ~/jzmq
2 ./autogen.sh
3 ./configure (如果你没有root或者sudo权限,可以使用./configure --prefix=/home/user-name --exec_prefix=/home/user-name --libdir=/home/user-name/libpath,最终libjzmq.so会在你指定的libdir中生成,zmq.jar会在prefix指定的路径下的share/java/文件夹下生成)
4 make
5 sudo make install
最终的zmq.jar文件会在目录/usr/local/share/java/下生成。
Storm的下载地址为:http://storm-project.net/downloads.html
安装步骤说明:https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster
问题说明:
1. 安装JZMQ执行.configure可能会有如下报错信息:
checking for ZeroMQ... no
checking zmq.h usability... yes
checking zmq.h presence... yes
checking for zmq.h... yes
checking for zmq_init in -lzmq... no
configure: error: cannot link with -lzmq
第一个no是因为在环境变量PATH中找不到libzmq.so这个包,只要修改公共环境变量/etc/profile,将libzmq.so所在的路径(一般会在/usr/local/lib或者/lib目录,如果没有,查看你的zeromq根目录下的src/.libs/下面有没有libzmq.so文件,如果有的话,执行/sbin/ldconfig -n .,如果没有,说明zeromq没有正常编译链接)加入环境变量即可,如果你无权修改公共环境变量,也可修改本地用户环境变量.bashrc文件,然后执行以下source .bashrc即可更新,重新执行configure,然后第一个no就会变成yes
至于第二个no,查看执行configure后生成的config.log日志文件可以看到如下错误:
configure:19738: g++ -o conftest -g -O2 -D_REENTRANT -D_THREAD_SAFE -I/usr/local/include -L/usr/local/lib -lzmq conftest.cc -lzmq >&5
710 /usr/local/lib/libzmq.so: undefined reference to `uuid_generate@UUID_1.0'
711 /usr/local/lib/libzmq.so: undefined reference to `uuid_unparse@UUID_1.0'
由此可知是链接的时候找不到libuuid这个包,因此需要修改一下configure文件,在链接命令中添加包依赖-luuid
line 19714: LIBS="-lzmq -luuid $LIBS"
保存退出后再次执行.configure命令,可以看到一切正常。