一、 Storm基本安装
1. 安装python
=================================
# wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tgz
# tar zxvf Python-2.7.2.tgz
# cd Python-2.7.2
# ./configure
# make
# make install
# vi /ect/ld.so.conf
--
文件末尾追加
/usr/local/lib
--
#sudo ldconfig
============================
2. 安装zookeeper
============================
#wget http://ftp.meisei-u.ac.jp/mirror/apache/dist//zookeeper/zookeeper-3.3.3/zookeeper-3.3.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
设置 ZOOKEEPER_HOME 和$ZOOKEEPER_HOME/bin
#vi ~/.bashrc
--
追加
export ZOOKEEPER_HOME="/path/to/zookeeper"
export PATH=$PATH:$ZOOKEEPER_HOME/bin
--
用zoo_sample.cfg制作$ZOOKEEPER_HOME/conf/zoo.cfg
#cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
制作dataLogDir和运行Dir
sudo mkdir /tmp/zookeeper
sudo mkdir /var/log/zookeeper
============================
3. 安装zeromq & jzmq
============================
1)安装zeromq
# wget http://download.zeromq.org/historic/zeromq-2.1.7.tar.gz
# tar zxf zeromq-2.1.7.tar.gz
# cd zeromq-2.1.7
# ./configure
**********************
如果报错
configure: error: in `/usr/local/download/zeromq-2.1.7':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
原因为没有安装c compiler
解决方法
# yum install gcc*
如果遇到Error:cannot link with -luuid, install uuid-dev
原因为缺少uuid相关package
解决方法
# yum install uuid*
# yum install e2fsprogs*
# yum install libuuid*
**********************
#make
#make install
更新LD_LIBRARY_PATH
#ldconfig
============================
2)安装jzmq
============================
#yum install git
#git clone git://github.com/nathanmarz/jzmq.git
**********************
如果有proxy的话执行
#git clone http://github.com/nathanmarz/jzmq.git
就能避开git的代理设置
**********************
# cd jzmq
# ./autogen.sh
**********************
如果报错
autogen.sh: error: could not find libtool. libtool is required to run autogen.sh.
缺少libtool
# yum install libtool*
**********************
# ./configure
# make
# make install
============================
4. 安装storm
============================
# wget https://github.com/downloads/nathanmarz/storm/storm-0.7.1.zip
# unzip storm- 0.7.1 zip
# cp -R storm-0.7.1 /usr/local/
# vi ~/.bashrc
--
追加
export STORM_HOME=/usr/local/storm-0.7.1
export PATH=$PATH:$STORM_HOME/bin
--
============================
到此为止,storm安装完毕。
二、storm-starter运行
可以使用maven或lein来解决storm-starter的包依赖问题,但是由于GFW原因,可能有些依赖包无法获取。故这里采用eclipse自导入包的方法来编译storm-starter
1. 编译storm-starter
1) 安装twitter4j
# mkdir twitter4j
# cd twitter4j
# wget http://twitter4j.org/en/twitter4j-2.2.5.zip
# unzip twitter4j-2.2.5.zip
2) 追加源文件storm-start/src/jvm/storm
A. 使用eclipse建立java project。追加twitter4j和storm的jar文件。
File-> New -> Java Project ->随便取个名字-> Next -> Libraries -> add External JARs...-> 追加twitter4j和storm的jar文件(/path/to/twitter4j/lib/*.jar和/path/to/storm/lib/*.jar和/path/to/storm/storm-{version}.jar)-> Finsh
B. 导入storm-start
File -> Imp
3) 追加源文件storm-start/multilang/resources×(python 文件word count用)
File -> Imp
注1:导入时,会提示有些包不存在(commons-collections-3.2.1.jar),下载导入即可。
注2:如果使用最新的storm-starter,而storm的版本是低于storm0.9.0的,会出现有些方法参数不匹配的现象,这是由于版本不统一造成的,修改源文件符合当前storm版本的方法即可
4) JAR export
File -> Export -> JAR -> JAR file -> 取消 “.classpath” ,“.project” 和 “<.settings” ->的勾 browse -> path/to/export/name.jar -> Finish (忽视 warnings)
5)执行刚才编译的文件
# storm jar StormStarter.jar storm.starter.ExclamationTopology
如果出现类似下面的文字,说明运行成功!
....
11367 [Thread-25] INFO backtype.storm.daemon.task - Emitting: class storm.starter.ExclamationTopology$ExclamationBolt source: 2:3, stream: 1, id: {}, [golda!!!]
....
2. Storm-starter本地运行
这里我们运行Storm-starter项目的wordCount,对于该类而言,如果没有传递参数,则本地运行,传递参数,则是集群运行。这里我们首先介绍本地运行
# storm jar <打包后的jar包名>.jar storm.starter.WordCountTopology
3. Storm-starter集群运行
A. 配置zookeepper
配置zookeeper时,注意zoo.cfg注意下面几个参数。改好zoo.cfg文件后,记得在dataDir = /opt/zookeeper目录下创建myid文件,从1开始,每个服务器加1就行。Storm运行起来之后,可以在zookeeper上看到很多Storm相关的数据。
# vi /usr/local/zookeeper-3.4.5/conf/zoo.cfg
dataDir=/opt/zookeeper
# the port at which the clients will
connect
clientPort=2181
server.1=172.16.0.235:4887:5887
#第一个节点地址
server.2=172.16.0.233:4887:5887 #第二个节点地址
B. 配置storm
# vi <storm安装路径>/conf/storm.yaml
storm.zookeeper.servers:
- "172.16.0.235"
- "172.16.0.233"
nimbus.host:"172.16.0.235"
storm.local.dir:"/opt/storm" ui.port: "18080"
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
- 6704
- 6705
# 注:根据你的cpu的能力可以多几个端口,每一个端口对应storm一个slot,可以运行storm的一个bolt
C. 启动服务
此时,就可以通过http://UI_Server:8080可以打开Storm Web UI看看Storm集群的状态。
同时,可以通过命令jps查看各进程运行状态
l 1882 core 对应的进程是Storm UI
l 341 Jps 对应的进程是Java jps
l 1880 nimbus 对应的进程是Storm nimbus
l 18450 supervisor 对应的进程是Storm supervisor
l 27380 worker 对应的线程是Storm main函数里面设置的 conf.setNumWorkers(15) ,所以本例中有15个worker。
l 2112 QuorumPeerMain 对应的进程是zkServer.sh
其中在nimbus上nimbus、 core和 QuorumPeerMain 这三个进程必须启动,如果启动失败,需要研究一下日志中失败的原因,按照上述的顺序再启动一次。否则 会导致下一步的topology提交失败,切记。
D. 启动服务
./storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar
storm.starter.WordCountTopology wordcountTop
注: 使用上面这个命令运行wordcount例子。命令是没错的,但是会提示找不到nimbus服务器,原来是由于Storm的CONF_DIR指定有错误,它会去.storm里面找storm.yaml这个文件,其实这个目录是不存在的。需要编辑bin/storm文件,将CONF_DIR指向正确的目录,具体方法如下:
# gedit bin/storm
添加:在CONF_DIR后面新增 CONF_DIR = STORM_DIR + "/conf"