在集群上运行topology

运行步骤

    类似本地模式,在集群上运行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中发生的错误次数和更详细的状态。

你可能感兴趣的:(在集群上运行topology)