在生产集群上运行topology跟本地模式差不多。下面是步骤:
1)定义topology(如果是java的话, 用TopologyBuilder)
2) 使用StormSubmitter来把topology提交到集群。StormSubmitter的参数有:topology的名字,topology的配置对象,以及topology本身。
比如:
1
2
3
4
5
|
Config conf = new Config();
conf.setNumWorkers( 20 );
conf.setMaxSpoutPending( 5000 );
StormSubmitter.submitTopology( "name" ,
conf, topology);
|
3) 创建一个包含你的程序代码以及你代码所依赖的依赖包的jar包(有关storm的jar包不用包括, 这些jar包会在工作节点上自动被添加到classpath里面去)。如果你使用maven, 那么插件:Maven Assembly Plugin可以帮你打包,只要把下面的配置加入你的pom.xml。
01
02
03
04
05
06
07
08
09
10
11
12
13
|
< plugin >
< artifactId >maven-assembly-plugin</ artifactId >
< configuration >
< descriptorRefs >
< descriptorRef >jar-with-dependencies</ descriptorRef >
</ descriptorRefs >
< archive >
< manifest >
< mainClass >com.path.to.main.Class</ mainClass >
</ manifest >
</ archive >
</ configuration >
</ plugin >
|
然后运行mvn assembly:assembly就可以打包了. 再说一下,不用包括storm相关的jar包,它们会自动加到classpath里面。
4)用storm客户端去提交jar包:
1
|
storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3 |
storm jar 会把代码提交到集群并且配置StormSubmitter类以让它和正确的集群进行通信。在这个例子里面,上传jar包之后storm jar命令会调用org.me.MyTopology的main函数,参数是 arg1, arg2, arg3。关于如何配置你的storm客户端去和storm集群进行通信可以看下配置storm开发环境。
常见配置
有很多topology级的配置可以设。这里有关于所有配置的清单, 以”TOPOLOGY”打头的配置是topology级别的配置,可以覆盖全局级别的配置。下面是一些比较常见的:
1)Config.TOPOLOGY_WORKERS: 这个设置用多少个工作进程来执行这个topology。比如,如果你把它设置成25, 那么集群里面一共会有25个java进程来执行这个topology的所有task。如果你的这个topology里面所有组件加起来一共有150的并行度,那么每个进程里面会有6个线程(150 / 25 = 6)。
2)Config.TOPOLOGY_ACKERS: 这个配置设置acker线程的数目。Ackers是Storm的可靠性API的一部分,关于storm的可靠性API可以看下:Twitter Storm如何保证消息不丢失。
3)Config.TOPOLOGY_MAX_SPOUT_PENDING: 这个设置一个spout task上面最多有多少个没有处理的tuple(没有ack/failed)回复, 我们推荐你设置这个配置,以防止tuple队列爆掉。
4)Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS: 这个配置storm的tuple的超时时间 – 超过这个时间的tuple被认为处理失败了。这个设置的默认设置是30秒,对于大多数的topology都已经足够了。关于storm的可靠性API可以看看Twitter Storm如何保证消息不丢失。
5)Config.TOPOLOGY_SERIALIZATIONS: 为了在你的tuple里面使用自定义类型,你可以用这个配置注册自定义serializer。
终止一个topology
要终止一个topology, 执行:
1
|
storm kill {stormname}
|
其中{stormname}是提交topology给storm集群的时候指定的名字。
storm不会马上终止topology。相反,它会先终止所有的spout,让它们不再发射任何新的tuple, storm会等Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS秒之后才杀掉所有的工作进程。这会给topology足够的时间来完成所有我们执行storm kill命令的时候还没完成的tuple。
更新一个运行中的topology
为了更新一个正在运行的topology, 唯一的选择是杀掉正在运行的topology然后重新提交一个新的。一个计划中的命令是实现一个storm swap命令来运行时更新topology, 并且保证前后两个topology不会同时在运行,同时保证替换所造成的“停机”时间最少。
监控topology
监控topology的最好的方法是使用Storm UI。Storm UI提供有关task里面发生的错误以及topology里面每个组件的吞吐量和性能方面的统计信息。同时你可以看看集群里面工作机器上面的日志。
相关推荐
Topology其实是在2013年开发的, 需要说明的是, 在GitHub上的这个Topology是一个简单的示例, 原因是: 首先我只保留了前端部分(服务端是很次要的); 其次完整的Topology涵盖了很多的图形化解决方案(如业务影响性&关联...
Topology has proved to be an essential tool for certain aspects of theoretical computer science. Conversely, the problems that arise in the computational setting have provided new and interesting ...
Munkres Topology Solution 拓扑相关的内容很重要
Topology-Scanner是WeOps团队免费开放的一个网络拓扑自动扫描模块,可以自动发现网络设备的类型、网络设备之间的互联
Herbert Edelsbrunner & Hohn Harer: Computational Topology: An Introduction. 计算拓扑学导论。
Topology 2nd课后习题答案全 望各位学霸学神点点赞,关注关注,打赏一下,找遍全网得到的答案
James R. Munkres - Topology.djvu 拓扑方面很好的一本书
Algebraic Topology A First Course
Storm作为开源的分布式实时计算系统在业界得到了广泛应用,针对Storm自带调度策略忽略了Topology组件任务间的逻辑耦合性,从而引起大量tuple传输产生较大网络时延问题,结合进程代数将Topology等效简化为具有明显...
全面介绍了ArcGIS 中Topology的使用方法,也详细介绍了GeoDatabase层面的Topology的组织
作者 Bert Mendelson 226 页, 目录: 1. theory of sets 2. metric spaces 3. topological spaces 4. connectedness 5. compactness
许多在计算几何学的普通操作(Operation)和空间数据处理在一个清晰的,一致的,完整的应用程序接口(API)是无掩蔽的。Java事务服务(JTS)是为了致力于能够支持确定性,清洁性,完整性和对空间数据进行查询的应用...
系统地讲解了algebraic topology,美国研究生标准教材
它们和CPU的进化过程息息相关,最终会体现在CPU topology(拓扑结构)上。因此本文将以CPU topology为主线,介绍CPU有关(主要以ARM CPU为例)的知识。 另外,CPU topology除了描述CPU的组成之外,其主要功能,是向...
Linux系统如何解析cpu topology详解
Armstrong的基础拓扑学,中文版,书市好书,只是观点有点点老
Topology-Preserving Deep Image Segmentation Segmentation algorithms are prone to make topological errors on fine-scale structures, e.g., broken connections. We propose a novel method that learns to ...
Topology of Numbers by hatcher
[无泪的拓扑].Topology_Without_Tears.pdf