【storm】storm集群安装

storm集群需要安装以下软件

python、zookeeper、zeromq、jzmq、storm

安装zeromq

# yum install libtool

# yum install gcc

# yum install gcc-c++

# yum install make

# yum install libuuid-devel

然后按着网上一个网友的帖子安装zmq,在configure那步的时候,网友的帖子里写的:

./configure --prefix={你的安装目录}

所以当时就用命令:

#./configure --prefix=/opt/zmq

安装到/opt/zmq目录下去了。 接下来一路make, make install好不顺利。

安装完成之后,按帖子里写的步骤要设置环境变量:

export CPPFLAGS=-I${zmqdir}/include/ 
export LDFLAGS=-L${zmqdir}/lib/

等zmq安装完成之后,需要验证一下是否安装成功,试用一下。平常都是用的java,所以就安装了git,然后通过命令

jzmq官网:https://github.com/zeromq/jzmq
git clone https://github.com/zeromq/jzmq.git

再按相应的步骤来操作:

$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

这时候做到./configure的时候出错了:

configure: error: C compiler cannot create executable

这时就奇了怪了啊,为什么呢?因为相关包都安装了,最有可能的问题就是环境变量出问题了。接下来各种搜,中间又安装一堆不知所谓的包(感觉linux中就是这个烦人),但是还是不行;最后看到一个说法:

是因为环境变量的问题,只要

export CFLAGS=

即可,于是照做,还是同样的问题,LP在旁边问要不把CPPFLAG也设置为空??好,试一下。然后./configure走了非常多步,最后又挂了,挂在了:

cannot find file zmq.h

./configure --with-pgm --prefix=/usr/local/opt/jzmq --with-zeromq=/opt/zmq

啊~~~~疯了,接下来把/opt/zmq的安装内容给删除,按官网的步骤走下来,一路成功。唉~~~

不过这里要说明的一下的是,官网中安装zeromq时要提前安装

autoconf
automake
libtool
gcc
gcc-g++
make
libuuid-dev ## 我在现在用yum install的时候报找不到这个包,后来我实现安装的是libuuid-devel,这个不太清楚是怎么回事?有知道的请解惑,感谢

zookeeper安装:参见:http://blog.csdn.net/seven_zhao/article/details/43836205


好了,zookeeper的集群配置好了。接下来配置storm:

vim /usr/local/storm/conf/storm.yaml :


 storm.zookeeper.servers:
     - "hostA"
     - "hostB"
     - "hostC"

 storm.zookeeper.port: 2181

 nimbus.host: "hostA"

 storm.local.dir: "/tmp/storm"
 storm.local.mode.zmq: true

 supervisor.slots.ports:
  - 6700
  - 6701
  - 6702
  - 6703

 

说明:

每个配置项都必须一个空格后开始,对于值为一个的eg:nimbus.host冒号后面需要加一个空格后在写内容,否则会报错

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修改成多个)。

好了,storm集群就配置好了。

现在准备启动strom集群:

在主节点hostA上启动:

# bin/storm nimbus

# bin/storm supervisor

# bin/storm ui

在从节点上hostB hostC启动:

# bin/storm supervisor

 

然后就可以在http://{NimbusHost}:8080界面上看到storm ui的运行情况了。

 

如提交运行任务:

storm jar sendCloud-dataAnalysis.jar com.sohu.sendCloud.controller.SimpleTopology analysis_v1

至此,整个strom集群搭建完成。

 

其中要注意几点就是 storm的配置文件storm.yaml格式要非常仔细,严格按照官方教程配置:https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster

如 参数前面有空格,ip地址使用双引号之类的,配置不规范就会运行异常。

另外,如果使用的几台机器是有别名的,一定要在每一台机器上都做好所有机器的host,不然就会出现如下错误:

[html]  view plain copy
  1. 2012-11-15 10:54:38 ClientCnxn [INFO] Session establishment complete on server zw_125_228/*.*.*.228:2181, sessionid = 0x33afe9d0d4b0caf, negotiated timeout = 20000  
  2. 2012-11-15 10:54:38 worker [ERROR] Error on initialization of server mk-worker  
  3. org.zeromq.ZMQException: Invalid argument(0x16)  
  4.         at org.zeromq.ZMQ$Socket.connect(Native Method)  
  5.         at zilch.mq$connect.invoke(mq.clj:74)  
  6.         at backtype.storm.messaging.zmq.ZMQContext.connect(zmq.clj:61)  
  7.         at backtype.storm.daemon.worker$mk_refresh_connections$this__4269$iter__4276__4280$fn__4281.invoke(worker.clj:243)  
  8.         at clojure.lang.LazySeq.sval(LazySeq.java:42)  
  9.         at clojure.lang.LazySeq.seq(LazySeq.java:60)  
  10.         at clojure.lang.RT.seq(RT.java:473)  
  11.         at clojure.core$seq.invoke(core.clj:133)  
  12.         at clojure.core$dorun.invoke(core.clj:2725)  
  13.         at clojure.core$doall.invoke(core.clj:2741)  
  14.         at backtype.storm.daemon.worker$mk_refresh_connections$this__4269.invoke(worker.clj:237)  
  15.         at backtype.storm.daemon.worker$fn__4324$exec_fn__1207__auto____4325.invoke(worker.clj:350)  
  16.         at clojure.lang.AFn.applyToHelper(AFn.java:185)  
  17.         at clojure.lang.AFn.applyTo(AFn.java:151)  
  18.         at clojure.core$apply.invoke(core.clj:601)  
  19.         at backtype.storm.daemon.worker$fn__4324$mk_worker__4380.doInvoke(worker.clj:322)  
  20.         at clojure.lang.RestFn.invoke(RestFn.java:512)  
  21.         at backtype.storm.daemon.worker$_main.invoke(worker.clj:432)  
  22.         at clojure.lang.AFn.applyToHelper(AFn.java:172)  
  23.         at clojure.lang.AFn.applyTo(AFn.java:151)  
  24.         at backtype.storm.daemon.worker.main(Unknown Source)  
  25. 2012-11-15 10:54:38 util [INFO] Halting process: ("Error on initialization")  


而且这样的错误提示很不明显。

修改vim /etc/hosts 将每一台机器的别名都配置到hosts文件上,即可。

下面看一下运行的ui展示:


引用:

http://www.cnblogs.com/literoad/archive/2013/03/15/2961035.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值