Storm是一个分布式实时计算系统,Storm对于实时计算的意义就至关于Hadoop对于批量计算的意义。对于实时性较高的系统Storm是不错的选择。Hadoop提供了map, reduce原语,使批处理程序变得很是地简单和优美。一样,storm也为实时计算提供了一些简单优美的原语。html
涉及的术语说明:node
Nimbus:Storm集群的主控节点,负责在Storm集群内分发代码,分配任务给工做机器,而且负责监控集群运行状态。其进程名为nimbus。apache
Supervisor:Supervisor负责监遵从Nimbus分配给它执行的任务,据此启动或中止执行任务的工做进程。其进程名为supervisor。vim
core:Storm的UI服务进程。网络
安装部署前的准备工做:分布式
1. 配置各主机IP,将各主机IP配置为静态IP(保证各主机能够正常通讯,为避免过多的网络传输,建议在同一网段)。oop
2. 修改各主机名,Storm集群中的全部主机都须要修改。ui
3. 配置各主机映射,修改hosts文件,加入各主机IP和主机名的映射。spa
4. 开放相应端口,后面文档中配置的端口都须要开放(或者关闭防火墙)。code
5. Python2.7及以上版本。
6. 保证Zookeeper集群服务正常运行。若是在CentOS上安装过Hadoop或者Zookeeper的话,1-5项基本没问题。关于Zookeeper参考:http://www.cnblogs.com/wxisme/p/5178211.html。
7. 这里使用的JDK、Storm版本分别为1.8和0.9.5。
1. 到Storm官网下载对应的安装包并上传到集群节点。
2. 解压安装包
tar -xvzf apache-storm-0.9.5.tar.gz
3. 修改storm.yaml配置文件
vim conf/storm.yaml
Storm集群使用的Zookeeper集群地址,根据实际状况进行修改。
storm.zookeeper.servers: - "node1" - "node2" - "node3"
Zookeeper的端口不是默认端口时须要配置参数:
storm.zookeeper.port: "修改的端口"
Nimbus和Supervisor进程用于存储少许状态,如jars、confs等的本地磁盘目录,须要提早建立该目录(根据实际状况建立)并给以足够的访问权限。
storm.local.dir: "/usr/storm/data"
Storm集群Nimbus机器地址,各个Supervisor工做节点须要知道哪一个机器是Nimbus,以便下载Topologies的jars、confs等文件。根据实际状况进行修改。
nimbus.host: "node3"
对于每一个Supervisor工做节点,须要配置该工做节点能够运行的worker数量。每一个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认状况下,每一个节点上可运行4个workers,分别在6700、670一、6702和6703端口。根据实际状况进行修改。
supervisor.slots.ports: - 6700 - 6701 - 6702
DRPC提供了集群中处理功能的访问接口,storm集群drpc地址,根据实际状况进行修改。关于DRCP参考:http://www.dataguru.cn/article-5572-1.html
drpc.servers: - "node3"
默认状况下,Storm启动worker进程时,JVM的最大内存是768M。因为在使用过程当中,Bolt中加载大量数据,768M内存没法知足要求,会致使内存溢出。根据实际状况进行修改。
worker.childopts: "-Xmx1024m"
1. 在主控节点启动Nimbus服务
bin/storm nimbus >> /dev/null &
查看nimbus服务是否启动:
jps
2.在各个节点启动Supervisor服务
bin/storm supervisor >> /dev/null &
3.启动drpc服务
bin/storm drpc >> /dev/null &
4.在主控节点启动Storm UI服务
bin/storm ui >> /dev/null &
查看UI服务是否启动:
jps
访问Storm UI
http://nimbus:8080/
执行如下命令,启动Storm Topology:
bin/storm jar test.jar com.test.MyTopology arg1 arg2
其中,test.jar是包含Topology实现代码的jar包,com.test.MyTopology的main方法是Topology的入口,arg1和arg2为com.test.MyTopology执行时须要传入的参数。
中止Storm Topology:
bin/storm kill {toponame}
其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。
简单的Storm集群就部署好了,能够开始愉快的Storm之旅了!