分享

storm本地模式与集群模式的区别

xuanxufeng 发表于 2015-8-4 15:38:44 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 31135
问题导读


1.storm本地模式和集群模式代码方面有什么区别?
2.如何终止storm拓扑?
3.Config.TOPOLOGY_DEBUG设置为true有什么作用?










本地模式与StormSubmitter的对比

现在,已经使用一个名为LocalCluster的工具在本地计算机上运行Topology。在计算机上运行Storm基础设施,可以很容易地运行与调试不同的Topology。但如果你想要提交你的Topology到运行中的Storm集群呢?Storm的一个有趣特性是,它很容易发送你的Topology去运行在一个真正的集群中。你需要做的是将LocalCluster改为StormSubmitter,实现submitTopology方法,submitTopology方法负责发送Topology到集群。

可以在下面的代码中看到变化:

[mw_shl_code=bash,true]// LocalCluster cluster = new LocalCluster();  
// cluster.submitTopology("Count-Word-Topology-With-Refresh-Cache", conf,  
    builder.createTopology());  
StormSubmitter.submitTopology("Count-Word-Topology-With-Refresh-Cache", conf,  
    builder.createTopology());  
// Thread.sleep(1000);  
// cluster.shutdown(); [/mw_shl_code]


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

接下来,需要打包源代码到一个jar文件中。当运行Storm客户端命令提交Topology时,会发送该jar文件。如果你使用Maven,唯一需要做的就是到源代码文件夹下运行以下命令:

[mw_shl_code=bash,true]mvn package [/mw_shl_code]

一旦生成了jar文件,就可以使用storm jar命令来提交Topology。语法如下:

[mw_shl_code=bash,true]Storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3 [/mw_shl_code]


在这个例子中,在Topology源代码项目文件夹下运行如下命令:

[mw_shl_code=bash,true]storm jar target/Topologies-0.0.1-SNAPSHOT.jar countword.TopologyMain src/main/resources/words.txt [/mw_shl_code]

使用完这些命令,就会提交Topology到集群中。

为了停止或者杀死Storm,可以运行如下命令:
[mw_shl_code=bash,true]storm kill Count-Word-Topology-With-Refresh-Cache [/mw_shl_code]


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

本地模式(Local mode)

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

只需使用LocalCluster类就可以创建一个进程内的集群,例如:
[mw_shl_code=bash,true]import backtype.storm.LocalCluster;  

LocalCluster cluster = new LocalCluster(); [/mw_shl_code]

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

关闭一个本地集群,只需要简单地调用:
[mw_shl_code=bash,true]cluster.shutdown(); [/mw_shl_code]

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

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

[mw_shl_code=java,true]java.lang.Object  
  └java.util.AbstractMap<K,V>
      └java.util.HashMap<java.lang.String,java.lang.Object>
          └backtype.storm.Config  
All Implemented Interfaces:  
java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.String,  
java.lang.Object> [/mw_shl_code]

2. Config.TOPOLOGY_MAX_TASK_PARALLELISM

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

3. Config.TOPOLOGY_DEBUG

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




已有(1)人评论

跳转到指定楼层
gc2018 发表于 2016-5-18 11:46:21
可以回复吗?
请问的是:本地模式:local model如何设置开发环境?
我现在的环境是
1.centos6.7;
2.storm1.0.1
3.zookeeper 3.4.6
几点疑问:
1.是否需要配置zookeeper?
2.如果需要配置zookeeper,需要设定的参数(?)
3.strom 1.0.1 需要安装到我的系统里吗?(设置环境变量)
4.在pom中scope应该是compile还是provied?
5.如何查看是否正确执行?

看了网上的那些,一个都跑不起~~~没有他们说的那种效果,在实现Spout类的类里作断点也没看到执行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条