一. 安装storm集群,需先安装jdk,zookeeper,配置本地yum源(生成环境不能随便联网),如果是本地测试,还要先关闭防火墙,请参考之前的博客。
二. 下载storm的安装包:storm-0.9.0.1.zip,Python-3.4.0a1.tgz,zeromq-4.0.3.tar.gz,jzmq-master.zip,所有的安装包最好到官网下载。
三. 安装python(很多linux都安装了python,使用命令:python ––version,查看python是否安装成功)
四. zeromq和jzmq依赖很多包,所以先把依赖包安装了,执行命令:
sudo yum -y install gcc gcc-c++ automake autoconf libtool make libuuid-devel
安装zeromq,jzmq的安装貌似是依赖zeromq的,所以应该先装zeromq,再装jzmq
#安装zeromq tar -zxvf zeromq-4.0.3.tar.gz cd zeromq-4.0.3 sudo ./configure sudo make sudo make install sudo ldconfig #更新LD_LIBRARY_PATH
五. 安装jzmq,如果没安装unzip,使用jar -xvf jzmq-master.zip也可以解压zip包(但是建议用unzip解压,用jar解压出现过问题)
#安装jzmq sudo unzip jzmq-master.zip sudo cd jzmq-master sudo ./autogen.sh sudo ./configure sudo make sudo make install
六. 安装storm
#安装storm sudo unzip storm-0.9.0.1.zip sudo cd storm-0.9.0.1
将storm添加到系统环境变量:vi ~/.bashrc,然后追加如下内容:
export STORM_HOME=/home/xuer/apps/storm-0.9.0.1 export PATH=$PATH:$STORM_HOME/bin
执行命令:source ~/.bashrc
修改storm的配置文件:vi ./conf/storm.yaml,特别注意yaml文件的格式,在每一行前面一定要有空格,配置文件中不要出现table代替空格的现象,在”:”后面也要空格,“-”前后必须要有空格,内容如下:
########### These MUST be filled in for a storm configuration storm.zookeeper.servers: - "host1" # - "host2" # - "192.168.0.88" nimbus.host: "host1" storm.zookeeper.port: 2181 storm.local.dir: "/home/xuer/apps/storm-0.9.0.1/data/" supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703 - 6704 # storm.messaging.transport: "backtype.storm.messaging.netty.Context" # storm.messaging.netty.server_worker_threads: 1 # storm.messaging.netty.client_worker_threads: 1 # storm.messaging.netty.buffer_size: 5242880 # storm.messaging.netty.max_retries: 100 # storm.messaging.netty.max_wait_ms: 1000 # storm.messaging.netty.min_wait_ms: 100 # # # ##### These may optionally be filled in: # ## List of custom serializations # topology.kryo.register: # - org.mycompany.MyType # - org.mycompany.MyType2: org.mycompany.MyType2Serializer # ## List of custom kryo decorators # topology.kryo.decorators: # - org.mycompany.MyDecorator # ## Locations of the drpc servers # drpc.servers: # - "server1" # - "server2" ## Metrics Consumers # topology.metrics.consumer.register: # - class: "backtype.storm.metrics.LoggingMetricsConsumer" # parallelism.hint: 1 # - class: "org.mycompany.MyMetricsConsumer" # parallelism.hint: 1 # argument: # - endpoint: "metrics-collector.mycompany.org"
七. 出现问题汇总
storm安装处问题最主要是在zeromq和jzmq的安装,这两个mq依赖的包很多,有gcc,gcc-c++,libuuid-devel,libtool,make,automake等等
安装的时候注意观察安装信息的最后几行,会出现各种问题,却c编译器,c++编译器等等,缺少什么就安装什么。
1.the JAVA_HOME environment variable must be set to your JDK location. 安装jzmq时出现这个问题。
但是当前xuer用户明明配了JAVA_HOME的。这是因为新生成的configure文件的所有者是root,虽然我们配了xuer的JAVA_HOME,但是没有配root的JAVA_HOME,所以报找不到JAVA_HOME,我也不清楚为什么用xuer用户装的产生的configure文件的所有者确是root用户的,解决方法是在configure文件的调用JAVA_HOME的地方手动设置JAVA_HOME。用vi打开jzmq-master/configure,找到如下代码:
if test "x$JAVA_HOME" = "x"; then as_fn_error $? "the JAVA_HOME environment variable must be set to your JDK location." "$LINENO" 5; fi
在前面加段JAVA_HOME的声明
# Check for JDK export JAVA_HOME=/home/xuer/apps/jdk1.7.0_45 if test "x$JAVA_HOME" = "x"; then as_fn_error $? "the JAVA_HOME environment variable must be set to your JDK location." "$LINENO" 5; fi
参考文章:JAVA_HOME NOT SET WHEN INSTALL Storm
2.使用yum install的时候,提示没有包,那是因为我们安装的自定义yum源需要重新挂载iso文件,重启机器可能会导致要重新挂载。首先进去iso的挂载目录,如果挂载目录下没有东西,则重新执行mount命令挂载。
3.no acceptable C compiler found,缺少c编译器
执行命令:sudo yum install gcc
4.unable to find a working C++ compiler,缺少c++编译器
执行命令:sudo yum install gcc-c++
5.提示缺uuid
执行命令:sudo yum install libuuid-devel
6.bash: unzip: command not found,缺少unzip
执行命令:sudo yum install unzip
7.could not find libtool is required to run autogen.sh,缺libtool
执行命令:sudo yum install libtool
8./make: command not found,没有安装make,先安装gcc,再安装make
执行命令:sudo yum install make
参考文章:
Twitter Storm 安装实战
centos安装zeromq, jzmq
Centos提示-bash: make: command not found的解决办