在进群生产环境下运行Topology和在本地模式下运行很是类似。下面是步骤:html
一、定义Topology(若是使用Java开发语言,则使用TopologyBuilder来建立)java
二、使用StormSubmitter向集群提交Topology。StormSubmitter有三个参数,Topology的名字,Topology的配置,和Topology自己。下面是例子:shell
Config conf = new Config(); conf.setNumWorkers(20); conf.setMaxSpoutPending(5000); StormSubmitter.submitTopology("mytopology", conf, topology);
三、将你的代码和你代码所依赖的jar包打包成一个jar包(Storm的jar包除外,Storm的jar包会被添加到worker节点的classpath路径)apache
若是你使用maven,插件Maven Assembly Plugin会帮你打包,只需将下面的代码添加到你的pom.xml中:api
<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命令来获取有效的jar包。确认你的jar包中没包含Storm的jar包,由于的classpath中已经存在。maven
四、使用Storm客户端将Topology提交到集群,指定你jar包的路径、名称河全部的参数而后运行: ui
storm jar path/to/allmycode.jar org.me.MyTopology arg1 arg2 arg3
storm jar命令会提交jar包给集群而且使用StormSubmitter类和有效地集群对话。在上面的示例中,在提交jar包后storm jar会使用"arg1","arg2","arg3"三个参数调用org.me.MyTopology的主方法.spa
你能够阅读设置Storm开发环境一文来查看如何使用storm客户端来和Storm进群对话。.net
经常使用的设置插件
每一个Topology都有不少不一样的配置。点击此处查看Topology的全部设置。带“TOPOLOGY”前缀的设置(其余的是集群的设置,不能被覆盖)能够被特定的Topology配置覆盖。下面是一些经常使用的Topology设置:
一、Config.TOPOLOGY_WORKERS
这个参数设置设置了使用了多少个工做进程去执行Topology。例如,若是你将此参数设置为25,就会有25个Java进程在集群中执行全部任务。若是在Topology中有150个并行执行的组件,那么每一个工做进程会以6个线程的方式执行个任务。
二、Config.TOPOLOGY_ACKER_EXECUTORS
这个参数设置当Spout元组被彻底处理后,追踪和探测元组树的执行进程的数量。Acker是Storm的一部分,你能够阅读Guaranteeing message processing一文来获取更多关于Acker的信息。若是不设置此参数,或者将此参数设置为空,Storm会将此参数设置为Topology指定的运行工做节点的数量。若是将这个参数设置为0,Storm会在Spout发出元组后马上返回成功信息,这将影响可靠性。
三、Config.TOPOLOGY_MAX_SPOUT_PENDING
此参数设置了在单一一个Spout任务中一次能够存留的最大元组的数量(没有返回成功或者失败消息的元组)。强烈建议设置此参数防止队列溢出。
四、Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS
这个参数设置了Spout元组被成功处理的最大超时时间。默认是30s,这对大多数的Topology来讲已经足够了。阅读Guaranteeing message processing一文了解更多Storm可靠性的知识。
五、Config.TOPOLOGY_SERIALIZATIONS
你可使用这个参数来注册更多的序列化器,以便在元组中使用自定义类型。
杀死一个Topology
要杀死一个Topology图谱,只需简单的运行:
storm kill {stormname}
将提交Topology时设置的名字传给 storm kill。
Storm不会马上杀死Topology。它会使全部的Spout失效而且确认他们不会再发射任何元组。Storm会在摧毁全部的工做节点以前等待Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS参数所设置的秒数,这给Topology足够的时间来处理完全部的元组。
更新运行中的Topology
要更新运行中的Topology,惟一的操做是杀掉当前的Topology而后从新提交一个新的Topology。一个计划中的特性是实现storm swap命令来用一个新的Topology替换运行中的Topology,保证最小的故障时间同时使全部的旧Topology再也不处理元组。
监控Topology
监控Topology的最好方法是使用Storm UI。Storm UI提供了运行任务中遇到的错误,细粒度的吞吐量状况以及每一个Topology中的每一个组件的表现。你也能够查看集群中工做节点的日志。