运行步骤
类似本地模式,在集群上运行topology步骤:
1)定义topology(如果使用java,使用topologyBuilder)
2)使用StormSubmitter来提交topology给集群。
Config conf = new Config();
conf.setNumWorkers(20);
conf.setMaxSpoutPending(5000);
StormSubmitter.submitTopology("mytopology", conf, topology);
3)创建jar,包含自己的代码以及代码所有依赖。storm jar会添加它到worker node的classpath上。
4)使用storm客户端提交topology给集群
storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3
storm jar将会提交jar给cluster,并配置StormSubmitter类与正确的cluster通话。
普通配置
这儿有多种配置。以TOPOLOGY开头的哪些配置可以被覆写,其他的不能。
1)Config.TOPOLOGY_WORKERS:设置worker用多少个进程执行topology。
2)Config.TOPOLOGY_ACKERS:设置task数目,此task跟踪tuple树,且探测什么时候spout tuple被成功处理。
3)Config.TOPOLOGY_MAX_SPOUT_PENDING:设置单个spout task一次能待处理的spout tuple个数,高度推荐设置放置队列爆炸。
4)Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS:在被认为失败之前,spout tuple被成功处理的最大时间。默认为30秒。
5)Config.TOPOLOGY_SERIALIZATIONS:想storm注册更多的serailizer,便于在tuple内使用这些注册类型。
Kill topology
storm kill ${stormname}
storm不会立即杀死topology,相反,它是spouts失效,不会在输出任何tuple,storm在销毁所有workers之前等待Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS,给topology足够的时间来完成正在处理的tuple。
Updating a running topology
更新正在运行的topology,唯一的方法是kill当前topology,重新提交新的。将来的版本中使用storm swap命令替换正在运行的topology。
Monitoring topologies
使用strom UI监控一个topology。它提供了在task中发生的错误次数和更详细的状态。