当前位置:首页 » 其他

storm单机版和集群版安装配置过程

2015-04-22 12:14 本站整理 浏览(6)
从2012年11月开始,研究和学习storm有三个月,觉得storm
是一个非常使用的工具,下面记录下心得以 共享。(单机版)本身使用closure编写,配置文件使用yaml,连README文件都用Markdown写。整个一反Haoop的Java+XML+HTML这些传统技术。安装Storm之前要先安装下面几个软件。一、准备工作1、安装zeromq。
wgethttp://download.zeromq.org/historic/zeromq-2.1.9.zip[/code] 
unzip zeromq-2.1.9.zip

&& cd zeromq-2.1.9

&&./configure && make -j && sudo
makeinstall

在./configure 的过程中,可能会出现找不到组件,执行以下命令安装必要的组件就行了:
sudo apt-get install
gcc g++ make automake
uuid-devel libtool
2、安装jzmq。
wgethttps://nodeload.github.com/nathanmarz/jzmq/zipball/master[/code] unzip nathanmarz-jzmq-dd3327d.zip && cd nathanmarz-jzmq-dd3327d &&./autogen.sh
&&./configure
&& make -j
&& sudo makeinstall

二、部署zookeeper首先配置zookeeper,如果你的电脑还么有zookeeper
,先安装。配置zookeeper时,注意zoo.cfg注意下面几个参数。改好zoo.cfg文件后,记得在dataDir
= /opt/zookeeper目录下创建myid文件,从1开始,每个服务器加1就行。Storm运行起来之后,可以在zookeeper上看到很多Storm相关的数据。注意如果zookeeper的clientPort不是默认的2181,就要配置storm.zookeeper.port。将zookeerper解压到/usr/local/
然后 export
PATH=$PATH:/usr/local/zookeeper-3.4.5/bin
然后 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
三、 安装部署storm 去github上下载0.9.0版,为了简单就直接使用二进制版本吧。将storm解压到/usr/local/
然后vi
~/.storm/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
接着启动zkServer
nimbus,supervisor和ui几个服务:
zkServer.sh start
zkServer.sh status #查看zkserver是否成功启动
storm nimbus&
storm supervisor&
storm ui&
通过http://UI_Server:8080可以打开Storm Web
UI看看Storm集群的状态。这时候还没有topology,需要提交一个。例如本文
UI 172.16.0.235:18080。地址 在浏览器中输入地址
172.16.0.235:18080查看storm运行状态。在命令窗口输入: jps 可以查看各个进程的运行状态:


上图中:1882 core 对应的进程是Storm UI341 Jps 对应的进程是Java jps1880 nimbus 对应的进程是Storm nimbus18450 supervisor 对应的进程是Storm supervisor27380 worker 对应的线程是Storm main函数里面设置的 conf.setNumWorkers(15),所以本例中有15个worker。2112 QuorumPeerMain 对应的进程是zkServer.sh其中在nimbus上nimbus、 core和 QuorumPeerMain
这三个进程必须启动,如果启动失败,需要研究一下日志中失败的原因,按照上述的顺序再启动一次。否则
会导致下一步的topology提交失败,切记。
四、测试Storm去github上下载storm-starter,这个项目中有一些Storm的例子程序,其中包括wordcount这个经典的Hadoop
M/R例子。如果不想安装lein,可以使用下面这个命令直接使用maven编译storm-starter。maven会去取项目依赖的jar包,通过输出可以看到都是取的storm-0.9.0rc的pom和jar包,所以它只能在storm-0.9.0rc环境中使用。在0.7.0上一直运行不成功,才意识到这个问题。
mvn -f m2-pom.xml package

使用下面这个命令运行wordcount例子。命令是没错的,但是会提示找不到nimbus服务器,原来是由于Storm的CONF_DIR指定有错误,它会去.storm里面找storm.yaml这个文件,其实这个目录是不存在的。需要编辑bin/storm文件,将CONF_DIR指向正确的目录。这个问题的答案是从Twitter-Storm的部署 找到的。
./storm jar storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar
storm.starter.WordCountTopology wordcountTop

storm会提示你topology提交成功。在浏览器中输入地址
172.16.0.235:18080查看storm运行状态。
运行wordcount之后发现居然没有输出,一点头绪都没有。今天上午在南南的提醒下,改了改WordCountTopology.java文件的WordCount::execute方法,添加一句“System.out.println(tuple);”,这样会在$STORM_HOME/logs目录下产生很多worker-6700.log这个文件,里面便是worker的输出。如果要部署一个新版本的topology,需要kill掉原来的topology。
(集群版)将一台电脑的storm安装好之后,在其他节点上安装 zeromq
jmzq,然后将这台nimbus电脑的 zookeeper 和storm文件夹 复制到
其他的电脑对应的文件夹下。就可以以下命令来启动从属节点上的storm:
zkServer.sh start
zkServer.sh status #查看zkserver是否成功启动
storm
supervisor&
storm ui&
需要注意的是:其他电脑/opt/zookeeper/myid 文件里的数字要和zoo.cfg文件里server编号对应。zoo.cfg文件里: server.1=172.16.0.235:4887:5887
#第一个节点地址
server.2=172.16.0.233:4887:5887 #第二个节点地址
参考博文:storm实战:深圳市实时路况分析和实时路径推荐系统storm的开发环境部署配置教程 storm单机版和集群版安装配置过程
缺少twitter4j依赖包的解决办法
基于storm的实时GPS数据客流特征分析系统 源码分析之(一)
基于storm的实时GPS数据客流特征分析系统 源码分析之(二)
附上一张我的 UI 以及 topology 运行情况:
一个节点的storm 每分钟可以接受并处理7万条GPS 记录。