在生产环境集群中运行拓扑的方式与本地模式非常相似,主要包括以下几个步骤:
1) 定义拓扑(如果使用 Java 进行开发就可以使用 TopologyBuilder)
2) 使用 StormSubmitter 向集群提交拓扑。StormSubmitter 接收拓扑名称、拓扑配置信息以及拓扑对象本身作为参数,如下所示:
Config conf = new Config();
conf.setNumWorkers(20);
conf.setMaxSpoutPending(5000);
StormSubmitter.submitTopology("mytopology", conf, topology);
3) 将你的拓扑程序以及相关依赖库(除了 Storm 本身的依赖 —— 这些依赖已经添加到 Storm 的工作节点的 classpath 中了)打包为一个 jar 文件。
如果你使用 Maven 进行开发,可以使用 Maven Assembly Plugin 来打包,你需要做的仅仅是将下述插件配置添加到你的 pom.xml 中:
maven-assembly-plugin
jar-with-dependencies
com.path.to.main.Class
然后就可以运行 mvn assembly:assembly 来打包。请确保你已经在 dependencies 中排除了 Storm 本身的 jar 包。
4) 使用 storm 客户端向集群提交拓扑,在提交时需要指定好你的 jar 包的相关路径、主函数所在类名称以及其他一些需要的参数,下面是一个提交拓扑的例子:
storm jar path/to/allmycode.jar org.me.MyTopology arg1 arg2 arg3<