Twitter Storm安装配置(集群)笔记

本篇幅主要是讲述在单机版本的基础上扩展成为集群。

集群中所有的机器都需要安装与单机版一样的所需工具软件:

python、zookeeper、zeromq、jzmq、storm

将上述工具安装单机版教程中所描述的一一安装即可。

区别就在于配置了,这里配置三台服务器 hostA hostB hostC

首先修改zookeeper的配置文件:

vim /usr/local/zookeeper/conf/zoo.cfg :

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181

server.1=hostA:2888:3888
server.2=hostB:2888:3888
server.3=hostC:2888:3888

上面这个配置文件可以在几台机一样。

echo 1 > /tmp/zookeeper/myid

这一步是每台电脑上都不同的。

具体的对应关系参见zoo.cfg中的server.x=hostname:portNumber:portNumber。

也就是说在我的配置文件中,hostA的echo是1,hostB的echo是2,hostC的echo是3。

然后分别启动三台机器:

bin/zkSever.sh start

这步是启动三台机器上的zookeeper,每台机器都要做。

接下去有几个命令是查看集群中zookeeper状态的:

  • # echo stat | nc HOSTMASTER 2181
  • # echo con“ | nc HOSTMASTER 2181
  • # echo dump | nc HOSTMASTER 2181
  • # echo wchs | nc HOSTMASTER 2181
  • # echo ruok | nc HOSTMASTER 2181
  • # bin/zkCli.sh.stat /
  • # bin/zkCli.sh ls /

好了,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

说明:

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展示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值