类似于Hadoop的架构,主从架构(master/slave)。
Nimbus--集群的主节点:负责任务(task)的指派和分发、资源的分配;
Supervisor--集群的从节点:负责任务的具体部分,启动和停止自己管理的worker;一个从节点可以通过配置启动多个worker进程,一个Topo也可以通过配置运行在多个worker进程上。
Worker: 运行具体组件逻辑(Spout/Bolt)的进程。 //进程
task:对应于Spout和Bolt;一个worker可以运行多个task; //线程
Worker中每一个Spout和Bolt的线程称为一个Task
executor: spout和bolt可能会共享一个线程 //线程
tar -zxvf apache-storm-1.1.0.tar.gz -C /soft //分发
sudo nano /etc/profile //四台机器都要配置
export PATH=$PATH:$STORM_HOME/bin
scp -r apache-storm-1.1.0 centos@s101:/soft/ //分发
rsync -l storm centos@s101:/soft
[storm/conf/storm.yaml] //配置完之后记得分发
$>cp storm.yaml storm.yaml.bak
storm.local.dir: "/home/centos/storm" //.yaml文件中:后面必须有空格!!!!
storm.zookeeper.servers: //zookeeper也是分布式的
### nimbus.* configs are for the master
### ui.* configs are for the master
supervisor.slots.ports: //同一个节点开启的worker进程数
scp storm.yaml centos@s101:/storm/conf/
s100: nimbus supervisor(ui,logviewer)
a)启动s100 nimbus进程 //先启动nimbus节点
[centos@s100 /home/centos/zookeeper]$jps
1541 QuorumPeerMain //zkServer
[root@s101 /soft/zookeeper/conf]#jps
8316 QuorumPeerMain //zkServer
[centos@s102 /home/centos]$jps
[centos@s103 /home/centos]$jps
1.kill掉 所有的supervisor以及nimbus, UI
// 代码提交到Storm集群上运行 String topoName = ClusterSumStormTopology.class.getSimpleName(); try { StormSubmitter.submitTopology(topoName,new Config(), builder.createTopology()); } catch (Exception e) { e.printStackTrace(); }
Syntax: storm jar topology-jar-path class args0 args1 args2
storm jar /home/hadoop/lib/storm-1.0.jar com.imooc.bigdata.ClusterSumStormTopology
List the running topologies and their statuses.