storm利用了分布式系统中经典的master/slave架构html
主控节点:这里称之为nimbus,负责在集群分发任务(Topology)的代码以及监控等。java
工做节点:这里称之为Supervisor,工做节点跟传动主从不一样之处在于,其并非本身直接执行任务。在接受到一个任务的时候,Supervisor会启动一个或多个进程(称之为worker),来处理任务。因此实际上,任务最终都是分配到了worker上。python
须要一下环境:git
zookeeper集群github
java 6 以上apache
Python 2.6.6 以上架构
ZMQ 2.1.7app
JZMQ 分布式
Storm使用Zookeeper协调集群,因为Zookeeper并不用于消息传递,因此Storm给Zookeeper带来的压力至关低。大多数状况下,单个节点的Zookeeper集群足够胜任,不过为了确保故障恢复或者部署大规模Storm集群,可能须要更大规模节点的Zookeeper集群。具体安装步骤这里不作描述。测试
下载jdk包 解压,配置环境变量。具体步骤这里不作描述。
下载:
wget http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tar.bz2
解压安装:
tar –jxvf Python-2.6.6.tar.bz2 cd Python-2.6.6 ./configure make make install
测试:
$ python -V Python 2.6.6
下载解压安装:
wget http://download.zeromq.org/zeromq-2.1.7.tar.gz tar -xzf zeromq-2.1.7.tar.gz cd zeromq-2.1.7 ./configure make sudo make install
安装过程当中可能会发现须要安装其余类库,我这里面安装时提示须要uuid,安装便可
yum install libuuid-devel
git clone https://github.com/nathanmarz/jzmq.git cd jzmq ./autogen.sh ./configure make sudo make install
安装完成所需的依赖以后,咱们终于能够安装storm。根据开发的软件选择合适版本的storm安装。这里选择的是storm-0.9.7发布版
下载解压:
wget http://mirror.bit.edu.cn/apache/storm/apache-storm-0.9.7/apache-storm-0.9.7.tar.gz tar -xvzf apache-storm-0.9.7.tar.gz
配置conf/storm.yaml文件,storm有默认配置文件,storm.yaml中的配置项会覆盖默认配置,经过如下连接能够查看默认配置:https://github.com/apache/storm/blob/master/conf/defaults.yaml
这里须要修改的配置项有(每个配置项前面要留一个空格):
storm.zookeeper.servers: Storm集群使用的Zookeeper集群地址
storm.zookeeper.servers: - "192.168.1.112" - "192.168.1.113"
storm.local.dir: Nimbus和Supervisor进程用于存储少许状态,如jars、confs等的本地磁盘目录,须要提早建立该目录并给以足够的访问权限。
storm.local.dir: "/opt/storm/data"
nimbus.host: Storm集群Nimbus机器地址.
nimbus.host: "192.168.1.112"
supervisor.slots.ports: 对于每一个Supervisor工做节点,须要配置该工做节点能够运行的worker数量。每一个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认配置有4端口可用,若是需改变或更多能够进行配置。
supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703
ui.port: storm为咱们提供了一个后台程序,能够监控资源运行状态,该端口配置用于咱们访问管理页面。http://192.168.1.111:8088/index.html
ui.port: 8088
能够在logs目录下查看每一个后台程序的启动日志。
提交命令
storm jar path/to/allmycode.jar(jar包路径) path.main.class(主类main) arg1 arg2 arg3(main方法参数)
这里提交命令:
./apache-storm-0.9.7/bin/storm jar Getting-Started-0.0.1-SNAPSHOT-jar-with-dependencies.jar sfpay.TopologyMain wordcountapp
查看运行状态:
./bin/storm list
Topology_name Status Num_tasks Num_workers Uptime_secs ------------------------------------------------------------------- wordcountapp ACTIVE 4 1 3707