借鉴:http://blog.youkuaiyun.com/jsjwk/article/details/8140456(Twitter Storm安装配置(单机版)笔记 )
http://blog.sina.com.cn/s/blog_5ca749810101c2dy.html(storm单机版和集群版安装配置过程)
http://blog.youkuaiyun.com/blue_jjw/article/details/9264131
http://www.tuicool.com/articles/2a6jMj (Storm实战常见问题及解决方案)
storm的官方安装说明(e文):https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster
storm的安装分为单机版和集群版,只是配置稍微有点区别,大致一样。
要使用storm首先要安装以下工具:
python、zookeeper、zeromq、jzmq、storm
第一步,安装Python2.7.2
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 /etc/ld.so.conf
追加/usr/local/lib/
sudo ldconfig
第二步,安装zookeeper
wget http://labs.mop.com/apache-mirror/zookeeper/zookeeper-3.3.5/zookeeper-3.3.5.tar.gz
tar -zxvf zookeeper-3.3.5.tar.gz
cp -R zookeeper-3.3.5 /usr/local/
ln -s /usr/local/zookeeper-3.3.5/ /usr/local/zookeeper
vim /etc/profile (设置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)
mkdir /tmp/zookeeper
mkdir /var/log/zookeeper
zookeeper的单机安装已经完成了。
第三步,安装zeromq以及jzmq
jzmq的安装貌似是依赖zeromq的,所以应该先装zeromq,再装jzmq。
1)安装zeromq:
wget http://download.zeromq.org/zeromq-2.2.0.tar.gz
tar zxf zeromq-2.2.0.tar.gz
cd zeromq-2.2.0
./configure
make
make install
sudo ldconfig (更新LD_LIBRARY_PATH)
zeromq安装完成。
注意:如有有依赖报错,需要安装:
jzmq dependencies 依赖包
sudo yum install uuid*
sudo yum install libtool
sudo yum install libuuid
sudo yum install libuuid-devel
2)安装jzmq
yum install git
git clone git://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
make install
然后,jzmq就装好了.
注意:在./autogen.sh这步如果报错:autogen.sh:error:could not find libtool is required to run autogen.sh,这是因为缺少了libtool,可以用#yum install libtool*来解决。
zeromq以及jzmq的make make install命令有问题可尝试加上权限试试
如果报错
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*
第四步,安装Storm
wget http://cloud.github.com/downloads/nathanmarz/storm/storm-0.8.1.zip
unzip storm-0.8.1.zip
mv storm-0.8.1 /usr/local/
ln -s /usr/local/storm-0.8.1/ /usr/local/storm
vim /etc/profile
export STORM_HOME=/usr/local/storm-0.8.1
export PATH=$PATH:$STORM_HOME/bin
到此为止单机版的Storm就安装完毕了。
第五步,测试一下本地模式的WordCount
先Maven安装配置
1.安装首先在本地电脑上安装Maven,从maven的官网下载http://maven.apache.org/
2.到本地解压,然后使用配置的相应目录/apache-maven-3.0.3/conf/ 下的settings.xml文件,
settings.xml文件包含有与系统环境相关的配置细节,例如代理配置,远程仓库,localRepository,服务器的认证信息等。
其中比较重要的是localRepository本地存储仓库路径,<localRepository>yourlocalRepository Path</localRepository>。
setting.xml详解见http://maven.apache.org/settings.html
3.配置环境变量 如果在linux下,修改相应的/etc/profile文件,windows参考java环境变量的设置
配置MAVEN_HOME=yourpath\ apache-maven-3.0.3,
添加apache-maven-3.0.3\bin到系统变量Path,
配置JAVA_HOME=yourJDKPath,
一定要确定系统变量的Path 中包含了JDK的bin目录,否则会报错!在windows环境下且无法编译通过!
4.验证Maven是否配置成功
cmd窗口中,执行mvn -v,可以看到显示安装的Maven版本信息
下载storm-starter 编译,并导入eclipse 工程:
1. 下载strom starter的代码 git clone https://github.com/nathanmarz/storm-starter.git
2. 使用mvn -f m2-pom.xml package 进行编译
3. 复制 storm-starter目录下的m2_pom.xml 为pom.xml ,因为eclipse需要pom.xml
4. 使用mvn eclipse:eclipse编译成eclipse工程
5. 在Eclipse 中import 选择storm-starter 的路径(一般导入项目后,会需要设置相应的M2_查看工程是否无误,可能会需要配置M2_REPO变量,
M2_REPO配置方法:工程上右键->Properties->Java Build Path->Libraries->AddVariable->Configure Variable->New
输入Name:M2_REPO , Path:localRepository路径->ok刷新工程),代码无误了,可以进行开发了
(pox.xml中有个<executor>标签报错找了半天不知什么错,我把这个标签删除了,暂时没有影响)
6. 编译无误后,现在本地跑storm.starter目录下的WordCountTopology,代表本地的local模式可以跑通过
使用eclipse的export功能导出项目的jar包,便于以后分布式的情况下,提交相应的逻辑
Strom-Starter构建失败,缺少twitter4j包 的解决办法:
(http://www.cnblogs.com/zeutrap/archive/2012/10/11/2720528.html)
修改Storm-Starter的pom文件m2-pom.xml ,修改dependency中twitter4j-core 和 twitter4j-stream两个包的依赖版本,如下:
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-core</artifactId>
<version>[2.2,)</version>
</dependency>
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-stream</artifactId>
<version>[2.2,)</version>
</dependency>
要注意上面的本地模式运行WordCount其实并没有使用到上述安装的工具,只是一个storm的虚拟环境下测试demo。那我们怎样将程序运行在刚刚搭建的单机版的环境里面呢,
很简单,官方的例子:
注意看官方实例中WordCountTopology类如果不带参数其实是执行的本地模式,也就是刚说的虚拟的环境,带上参数就是将jar发送到了storm执行了。
首先弄好环境:
启动zookeeper:
/usr/local/zookeeper/bin/zkServer.sh 单机版直接启动,不用修改什么配置,如集群就需要修改zoo.cfg另一篇文章会讲到。
配置storm:
文件在/usr/local/storm/conf/storm.yaml
内容:
storm.zookeeper.servers:
- 127.0.0.1
storm.zookeeper.port: 2181
nimbus.host: "127.0.0.1"
storm.local.dir: "/tmp/storm"
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
这个脚本文件写的不咋地,所以在配置时一定注意在每一项的开始时要加空格,冒号后也必须要加空格,否则storm就不认识这个配置文件了。
说明一下:storm.local.dir表示storm需要用到的本地目录。nimbus.host表示那一台机器是master机器,即nimbus。storm.zookeeper.servers表示哪几台机器是zookeeper服务器。storm.zookeeper.port表示zookeeper的端口号,这里一定要与zookeeper配置的端口号一致,否则会出现通信错误,切记切记。当然你也可以配superevisor.slot.port,supervisor.slots.ports表示supervisor节点的槽数,就是最多能跑几个worker进程(每个sprout或bolt默认只启动一个worker,但是可以通过conf修改成多个)。
执行:
# bin/storm nimbus&(启动主节点)
# bin/storm supervisor&(启动从节点)
执行命令:# storm jar StormStarter.jar storm.starter.WordCountTopology
此命令的作用就是用storm将jar发送给storm去执行
注意:如果出错报python 找不到../tmp/...文件夹,但在eclipse环境可以跑起来,请将storm-start/multilang/resources文件夹导入项目src下再打包
搞定,任务就发送到storm上运行起来了,还可以通过命令:
# bin/storm ui&
启动ui,可以通过网页 127.0.0.1:8080/ 查看运行i情况。(如果ui访问失败说明之前搭的环境还有问题或有没启动起来)
# bin/: jps