大数据_Storm_Storm的集群模式与本地模式 (基于Storm 1.0.1)

本文探讨了Apache Storm中本地模式与集群模式的区别,并通过示例代码展示了如何在两种模式间进行切换。本地模式适用于开发和测试阶段,而集群模式则用于实际部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天博主遇到了一个问题,就是将Storm 设置成本地模式后,将 Storm 的包打压成jar , 提交上去。  这时候通过 Storm ui  启动 监控界面。  但是没有查看到 Topology ,应该是本地模式的锅,我将模式切换成集群模式就能在监控界面上看到Topology了。


下面对 集群模式 与 本地模式的 设置代码  进行下粘贴, 留作备忘



项目代码地址: http://pan.baidu.com/s/1c1XSdpA



Storm 做为一个分布式的计算模块,支持 本地模式 与 集群模式 


本地模式与集群模式 设置在Topology 的main 函数中



本地模式

//本地模式:本地提交
            LocalCluster cluster = new LocalCluster();  
            cluster.submitTopology("firstTopo", conf, builder.createTopology());  
            Utils.sleep(100000);  
            cluster.killTopology("firstTopo");  
            cluster.shutdown()







集群模式

//集群模式:集群提交
            StormSubmitter.submitTopology("firstTopo", conf, builder.createTopology());




当使用StormSubmitter时,不能在代码中控制集群,这和LocalCluster是不一样的。

Topology的名字必须具有唯一性。






全部的完整代码:

package count;

import org.apache.storm.Config;
import org.apache.storm.StormSubmitter;
import org.apache.storm.topology.TopologyBuilder;

//本地模式需要
//import org.apache.storm.utils.Utils;
//import org.apache.storm.LocalCluster;

public class FirstTopo {
    
    public static void main(String[] args) throws Exception {  
        TopologyBuilder builder = new TopologyBuilder();   
        builder.setSpout("spout", new RandomSpout());  
        builder.setBolt("bolt", new SenqueceBolt()).shuffleGrouping("spout"); 
        Config conf = new Config();  
        conf.setDebug(false); 
        if (args != null && args.length > 0) {  
            conf.setNumWorkers(3);  
            StormSubmitter.submitTopology(args[0], conf, builder.createTopology());  
        } else {  
        	
//        	//本地模式:本地提交
//            LocalCluster cluster = new LocalCluster();  
//            cluster.submitTopology("firstTopo", conf, builder.createTopology());  
//            Utils.sleep(100000);  
//            cluster.killTopology("firstTopo");  
//            cluster.shutdown();  
        	
        	//集群模式:集群提交
            StormSubmitter.submitTopology("firstTopo", conf, builder.createTopology());
            
        }  
    }  
}






额外拓展


本地模式(Local mode)

本地模式在进程中模拟了一个Storm集群,用于开发和测试Topology。在本地模式下运行Topology类似于在集群上运行Topology。

只需使用LocalCluster类就可以创建一个进程内的集群,例如:
 

 
  1. import backtype.storm.LocalCluster;  
  2.  
  3. LocalCluster cluster = new LocalCluster(); 

然后,可以使用LocalCluster对象的submitTopology方法来提交Topology。就像在StormSubmitter中相应的方法一样,submitTopology方法需要一个名字、一个Topology配置和Topology对象。然后,你可以使用killTopology方法,将Topology名称作为参数,杀死一个Topology。

关闭一个本地集群,只需要简单地调用:
 

 
  1. cluster.shutdown(); 

1. 常见的本地模式的配置

acktype.storm.Config类用来配置Storm,它的继承关系如下:
 

 
  1. java.lang.Object  
  2.   └java.util.AbstractMap<K,V> 
  3.       └java.util.HashMap<java.lang.String,java.lang.Object> 
  4.           └backtype.storm.Config  
  5. All Implemented Interfaces:  
  6. java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.String,  
  7. java.lang.Object> 

2. Config.TOPOLOGY_MAX_TASK_PARALLELISM

这个配置项是组件产生线程数量的上限。通常生产环境的拓扑并行度很大(数以百计的线程),可以尝试在本地模式下测试拓扑,找出不合理负荷的地方。这个配置项使你可以很容易地控制并行度。

3. Config.TOPOLOGY_DEBUG

当设置为true时,每次从Spout或者Bolt发送元组,Storm都会写进日志,这对于调试程序是非常有用的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值