加载中…
正文 字体大小:

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

(2013-01-30 17:08:50)
标签:

storm

单机版

集群版

云计算

it

分类: storm/haddop/云计算

从2012年11月开始,研究和学习storm有三个月,觉得storm 是一个非常使用的工具,下面记录下心得以 共享。

(单机版)

本身使用closure编写,配置文件使用yaml,连README文件都用Markdown写。整个一反Haoop的Java+XML+HTML这些传统技术。安装Storm之前要先安装下面几个软件。

一、准备工作

1、安装zeromq。


wget http://download.zeromq.org/historic/zeromq-2.1.9.zip
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。


wget https://nodeload.github.com/nathanmarz/jzmq/zipball/master
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  可以查看各个进程的运行状态: 

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

上图中:

1882 core   对应的进程是Storm UI

341 Jps     对应的进程是Java jps

1880 nimbus 对应的进程是Storm nimbus

18450 supervisor 对应的进程是Storm supervisor

27380 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的开发环境部署配置教程 






附上一张我的 UI 以及 topology 运行情况: 一个节点的storm 每分钟可以接受并处理7万条GPS 记录。

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

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有