您的位置:首页 > 其它

FW:分布式实时计算storm 原理…

2014-01-15 12:23 435 查看
http://my.oschina.net/leejun2005/blog/147607?from=20130804

10、单机版安装指南

环境:centos
6.4

安装步骤请参考:http://blog.sina.com.cn/s/blog_546abd9f0101cce8.html

要注意上面的本地模式运行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
test

此命令的作用就是用storm将jar发送给storm去执行,后面的test是定义的toplogy名称。

搞定,任务就发送到storm上运行起来了,还可以通过命令:

# bin/storm ui

然后执行 jps 会看到 3 个进程:zookeeper 、nimbus、 supervisor

启动ui,可以通过浏览器, ip:8080/ 查看运行i情况。

配置后,执行 storm jar sm.jar
main.java.TopologyMain words.txt

也许会报:java.lang.NoClassDefFoundError:
clojure.core.protocols$seq_reduce

这是由于我使用了 oracle JDK 1.7
的缘故,换成 open JDK 1.6 就正常了,



1
su
-c
"yum
install java-1.6.0-openjdk-devel"
具体参考:https://github.com/technomancy/leiningen/issues/676

测试代码:
https://github.com/storm-book/examples-ch02-getting_started
运行结果:

storm
jar sm.jar main.java.TopologyMain
words.txt

02

...

6020 [main] INFO
backtype.storm.messaging.loader
- Shutdown receiving-thread:
[Getting-Started-Toplogie-1-1374946750, 4]

6020 [main] INFO
backtype.storm.daemon.worker -
Shut down receive thread

6020 [main] INFO
backtype.storm.daemon.worker -
Terminating zmq context

6020 [main] INFO
backtype.storm.daemon.worker -
Shutting down executors

OK:is

6021 [main] INFO
backtype.storm.daemon.executor
- Shutting down executor word-counter:[2
2]

OK:an

OK:storm

OK:simple

6023 [Thread-16]
INFO backtype.storm.util -
Async loop interrupted!

OK:application

OK:but

OK:very

OK:powerfull

OK:really

OK:

OK:StOrm

OK:is

OK:great

6038 [Thread-15]
INFO backtype.storm.util -
Async loop interrupted!

-- Word Counter
[word-counter-2] --

really:1

but:1

application:1

is:
2

great:
2

are:1

test:1

simple:1

an:1

powerfull:1

storm:
3

very:1

6043 [main] INFO
backtype.storm.daemon.executor
- Shut down executor word-counter:[2
2]

6044 [main] INFO
backtype.storm.daemon.executor
- Shutting down executor word-normalizer:[3
3]

6045 [Thread-18]
INFO backtype.storm.util -
Async loop interrupted!

6052 [Thread-17]
INFO backtype.storm.util -
Async loop interrupted!

6056 [main] INFO
backtype.storm.daemon.executor
- Shut down executor word-normalizer:[3
3]

6056 [main] INFO
backtype.storm.daemon.executor
- Shutting down executor word-reader:[4
4]

6058 [Thread-19]
INFO backtype.storm.util -
Async loop interrupted!

...

其它参考地址:
https://github.com/philipgao/storm-demo http://tianhailong.com/本地模式运行storm的demo.html/运行日志 http://blog.sina.com.cn/s/blog_8ae7b3fe010124mr.html
分布式安装指南: http://hitina.lofter.com/post/a8c5e_136579#

storm wiki
教程: http://xumingming.sinaapp.com/138/twitter-storm入门/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: