(单机版)
本身使用closure编写,配置文件使用yaml,连README文件都用Markdown写。整个一反Haoop的Java+XML+HTML这些传统技术。安装Storm之前要先安装下面几个软件。
一、准备工作
1、安装zeromq。
在./configure 的过程中,可能会出现找不到组件,执行以下命令安装必要的组件就行了:
| sudo apt-get |
2、安装jzmq。
二、部署zookeeper
首先配置zookeeper,如果你的电脑还么有zookeeper ,先安装。
配置zookeeper时,注意zoo.cfg注意下面几个参数。改好zoo.cfg文件后,记得在dataDir
注意如果zookeeper的clientPort不是默认的2181,就要配置storm.zookeeper.port。
将zookeerper解压到/usr/local/ 然后
export PATH=$PATH:/usr/local/zookeeper-3.4.5/bin
然后
|
dataDir=/opt/zookeeper# the port at which the clients willconnect
clientPort=2181
server.1=172.16.0.235:4887:5887
|
三、
去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
| zkServer.sh start zkServer.sh status storm nimbus& storm supervisor& storm ui& |
通过http://UI_Server:8080可以打开Storm Web UI看看Storm集群的状态。这时候还没有topology,需要提交一个。例如本文 UI
在命令窗口输入: jps
上图中:
1882 core
341 Jps
1880 nimbus 对应的进程是Storm nimbus
18450 supervisor 对应的进程是Storm supervisor
27380 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上一直运行不成功,才意识到这个问题。
使用下面这个命令运行wordcount例子。命令是没错的,但是会提示找不到nimbus服务器,原来是由于Storm的CONF_DIR指定有错误,它会去.storm里面找storm.yaml这个文件,其实这个目录是不存在的。需要编辑bin/storm文件,将CONF_DIR指向正确的目录。这个问题的答案是从Twitter-Storm的部署
storm会提示你topology提交成功。在浏览器中输入地址
运行wordcount之后发现居然没有输出,一点头绪都没有。今天上午在南南的提醒下,改了改WordCountTopology.java文件的WordCount::execute方法,添加一句“System.out.println(tuple);”,这样会在$STORM_HOME/logs目录下产生很多worker-6700.log这个文件,里面便是worker的输出。如果要部署一个新版本的topology,需要kill掉原来的topology。
(集群版)
将一台电脑的storm安装好之后,在其他节点上安装 zeromq
| zkServer.sh start zkServer.sh status storm supervisor& storm ui& |
需要注意的是:其他电脑/opt/zookeeper/myid 文件里的数字要和zoo.cfg文件里server编号对应。
zoo.cfg文件里:
参考博文: