storm的topology设计和开发就略过了。本章主要来说说如何在storm的集群环境中,通过storm的管理命令来发布和管理集群中的topology。
1、打包
打包插件是使用maven提供的maven-shade-plugin,详细见maven-shade-plugin。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> <transformers> <!--下面的这个transformer完全是为了发布topology的时候不提供程序入口而配置的,意思就是打包成一个可执行的jar包,但通常我们不需要这样配置,因为一个jar包里通常都会有很多个topology--> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <!--程序入口类,隐私部分用XXX表示--> <mainClass>com.XXX.storm.XXXTopology</mainClass> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin>
2、发布
首先把打好的jar包上传到storm集群的主结点(nimbus结点),然后使用storm命令进行topology发布。
没有配置storm命令环境变量,切换到storm的bin目录执行:
./storm jar /opt/libs/storm-0.0.1-SNAPSHOT.jar com.XXX.storm.XXXTopology [参数]
配置了storm命令环境变量,直接执行:
storm jar /opt/libs/storm-0.0.1-SNAPSHOT.jar com.XXX.storm.XXXTopology [参数]
扫描二维码关注公众号,回复:
493748 查看本文章
注意:参数是可选的,通常会把Topology的名称和Num workers等,以参数的形式赋值。例如:storm jar /opt/libs/storm-0.0.1-SNAPSHOT.jar com.XXX.storm.XXXTopology TopologyName
3、检查
发布后,会提示INFO backtype.storm.StormSubmitter - Finished submitting topology: XXX-topology等信息表示topology发布成功,在storm ui界面的topology summary列表里面也能看到刚才我们提交的topology,到此表示topology成功发布了。