Strom(四)运行流程

storm管理命令

    storm jar 【jar路径】 【拓扑包名.拓扑类名】 【拓扑名称】

    JAR:storm jar topology_jar topology_class [arguments...] 
    jar命令是用于提交一个集群拓扑.它运行指定参数的topology_class中的main()方法,上传topology_jar到nimbus, 由nimbus发布到集群中。一旦提交,storm将激活拓扑并开始处理topology_class 中的main()方法,main()方法负责调用StormSubmitter.submitTopology()方法,并提供一个唯一的拓扑(集群)的 名。如果一个拥有该名称的拓扑已经存在于集群中,jar命令将会失败。常见的做法是在使用命令行参数来指定拓扑名称,以便拓扑在提交的时候被命名。 

    KILL:storm kill topology_name [-w wait_time] 
    杀死一个拓扑,可以使用kill命令。它会以一种安全的方式销毁一个拓扑,首先停用拓扑,在等待拓扑消息的时间段内允许拓扑完成当前的数据流。执行 kill命令时可以通过-w [等待秒数]指定拓扑停用以后的等待时间。也可以在Storm UI 界面上实现同样的功能 

    Deactivate:storm deactivate topology_name 
    停用拓扑时,所有已分发的元组都会得到处理,spouts的nextTuple方法将不会被调用。也可以在Storm UI 界面上实现同样的功能 

    Activate:storm activate topology_name 
    启动一个停用的拓扑。也可以在Storm UI 界面上实现同样的功能 


Topology运行流程

    (1)Storm提交后,会把代码首先存放到Nimbus节点的inbox目录下,之后,会把当前Storm运行的配置生成一个 stormconf.ser文件放到Nimbus节点的stormdist目录中,在此目录中同时还有序列化之后的Topology代码文件 
    (2) 在设定Topology所关联的Spouts和Bolts时,可以同时设置当前Spout和Bolt的executor数目和task数目,默认情况下, 一个Topology的task的总和是和executor的总和一致的。之后,系统根据worker的数目,尽量平均的分配这些task的执行。 worker在哪个supervisor节点上运行是由storm本身决定的 
    (3)任务分配好之后,Nimbus节点会将任务的信息提交到zookeeper集群,同时在zookeeper集群中会有workerbeats节点,这里存储了当前Topology的所有worker进程的心跳信息 
    (4)Supervisor 节点会不断的轮询zookeeper集群,在zookeeper的assignments节点中保存了所有Topology的任务分配信息、代码存储目 录、任务之间的关联关系等,Supervisor通过轮询此节点的内容,来领取自己的任务,启动worker进程运行 
    (5)一个Topology运行之后,就会不断的通过Spouts来发送Stream流,通过Bolts来不断的处理接收到的Stream流,Stream流是无界的。 
    最后一步会不间断的执行,除非手动结束Topology。 

Topology运行方式

    在开始创建项目之前,了解Storm的操作模式(operation modes)是很重要的。 Storm有两种运行方式 
    本地运行的提交方式,例: 
LocalCluster cluster = new LocalCluster(); 
cluster.submitTopology(TOPOLOGY_NAME, conf, builder.createTopology()); 
Thread.sleep(2000); 
cluster.shutdown(); 
    分布式提交方式,例: 
StormSubmitter.submitTopology(TOPOLOGY_NAME, conf, builder.createTopology()); 
  




你可能感兴趣的:(Strom(四)运行流程)