安装步骤:
1. 下载一个发布版本(这里用的是storm-0.6.0),解压到一个目录下,将bin目录添加到系统的PATH环境中。
2. 为了可以在一个远程的集群上启动和停止topologies, 通过~/.storm/storm.yaml文件来配置cluster (后面会进一步说明) 。
开发环境介绍:
Storm有两种操作模式:本地模式和远程模式。本地模式下topologies的开发、测试运行可以在一台本地机器上完成,远程模式需要将topologies提交到cluster完成执行。
我们来快速的了解下本机机器和cluster的关系。一个cluster由一个被称作“Nimbus”的主节点所管理。本地机器通过Nimbus 将代码(或者jar包)和topologies提交到cluster来执行的,Nimbus来托管这些代码并分配一些works来运行你的 topology。本地机器通过一个storm的控制台来和Nimbus通信,这个storm控制台仅仅用于远程模式(本地模式的开发和测试不用它)。
本地客户端安装:
如果你想将topologies通过本地提交到cluster,需要先安装Strom的本地客户端程序。从https://github.com/nathanmarz/storm/downloads下载并解压到你机器上某个目录下,将解压后的bin目录添加到系统PATH中,并且确保bin/storm下面的script可以执行(有执行的权限等)。
安装本地客户端程序只是为了和远程的cluster进行交互。对于本地模式下topologies的代码开发、测试,建议你使用maven来管理,在maven中包含对Strom的依赖。
安装过程:
1) 安装leiningen.下载该脚本https://raw.github.com/technomancy/leiningen/stable/bin/lein,加入PATH环境,并确保能运行。
2) 使用git将storm-deploy下载下来。
3) 运行 lein deps
4) 创建一个文件 ~/.pallet/config.clj,来配置AWS上的示例,内容如下:
- (defpallet
- :services
- {
- :default {
- :blobstore-provider "aws-s3"
- :provider "aws-ec2"
- :environment {:user {:username "storm"
- :private-key-path "$YOUR_PRIVATE_KEY_PATH$"
- :public-key-path "$YOUR_PUBLIC_KEY_PATH$"}
- :aws-user-id "$YOUR_USER_ID$"}
- :identity "$YOUR_AWS_ACCESS_KEY$"
- :credential "$YOUR_AWS_ACCESS_KEY_SECRET$"
- :jclouds.regions "$YOUR_AWS_REGION$"
- }
- })
配置说明:
A. 在每个节点上设置生成ssh公、私钥,公钥的路径必须是私钥路径+ “.pub”。在Linux上,还需要一个null护照。
B. aws-user-id:可以在你帐户(Git?)的管理页面找到。它是一个数字序列,将它放到上面这个配置文件中。
C. Identity: AWS的访问key。
D. Credential:AWS访问key的密码。
5) 修改conf/clusters.yaml。可以修改zookeeper nodes 和 supervisor nodes的数量通过修改zookeeper.count 或者supervisor.count。可以通过修改supervisor.spot.price来启动supervisor nodes的spot实例
6) (可选项)cluster的一些用户配置项通过修改conf/storm.yaml来完成,比如:超时时间、客户注册序列..
启动clusters:
执行命令:
- lein run :deploy --start --name mycluster --release {release version}
--name 参数用来给cluster指定一个名字,然后根据这个名字连接或者停掉它。省略的话,默认为“dev”。
--release参数标识当前使用的版本,缺省为主分支版本,强烈建议加上。
这个过程会设置Zookeeper,设置Nimbus,在端口8080启动Storm UI,在Nimbus端口3772上启动DRPC服务,设置Supervious,设置安全许可,并且将你的机器连接到cluster。
停止clusters:
- lein run :deploy --stop --name mycluster
连接cluster:
- lein run :deploy --attach --name mycluster
连接前需要:
1. 将Nimbus的地址写入到~/.storm/storm.yaml中,这样客户端才指定要连接的cluster是哪一个(例如:nimbus.host: "123.45.678.890" )。
2. 可以访问Nimbus的守护进程提供的Thrift端口(用来提交topologies)(thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。)
3. 可以访问Storm UI在Nimbus的8080端口
4. 可以访问Ganglia在Nimbus的80端口。
获取cluster nodes的ip:
- lein run :deploy --ips --name mycluster
Ganglia
可以通过浏览器来访问:
http://{nimbus ip}/ganglia/index.php