一、 项目创建
1、
建立mvn项目
#mvn archetype:generate -DgroupId=storm.blueprints -DartifactId=Chapter1 -DpackageName=storm.blueprints.chapter1.v1
2、 编辑配置文件pom.xml
3、 测试配置Maven是否正确
#mvn install
4、 回到项目根目录,创建Eclipse项目文件
#mvn eclipse:eclipse
5、 打开eclipse并将刚才创建的项目导入
6、 编写代码
7、 在项目根目录下启动集群
#mvn compile exec:java -Dexec.classpathscope=compile Dexec.mainClass=storm.blueprints.WordCountTopology
-
OR
直接在eclipse中运行程序,若报错“select a configuration to luanch”则 右键项目文件夹 – Properties – Run/Debug Settings – New – Main Class使用search功能找到**.**.Topology。
二、 pom.xml修改
修改后执行mvn eclipse:eclipse,回到eclipse刷新即可。
三、 打包
在项目文件目录下
mvn clean:clean
mvn assembly: assembly (因为在pom.xml文件中配置了assembly)
得到jar包,删除jar包中的default,传到服务器
把conf文件传到服务器
211 storm用户 执行命令:
#/home/storm/apache-storm-0.9.3/bin/storm
/home/storm/wuzailong/RealAnalysis-opf-jar-with-dependencies.jar stormRotate.topology.opfTopology
-local_mode
false
jar
-config_path
/home/storm/wuzailong/opfconf -generator_spout true
#/home/storm/apache-storm-0.9.3/bin/storm
/home/storm/wuzailong/cmss/cmssSa-alpha-jar-with-dependencies.jar stormRotate.topology.tomcatAudit
-local_mode
false
jar
-config_path
/home/storm/wuzailong/cmss/conf/ -generator_spout true
运行完成后再10.10.211:8080查看结果
四、 启动storm
# /home/storm/apache-storm-0.9.3/bin/storm nimbus &
# /home/storm/apache-storm-0.9.3/bin/storm ui &
五、 提交Topology到集群
使用Maven,在源代码文件夹下运行如下命令:
#mvn package
一旦生成了jar文件,就可以使用storm jar命令来提交Topology到集群。语法如下:
Storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3
为了停止或者杀死Storm,可以运行如下命令:
#storm kill Count-Word-Topology-With-Refresh-Cache
Topology的名字必须具有唯一性。
本地模式在进程中模拟了一个Storm集群,用于开发和测试Topology。在本地模式下运行Topology类似于在集群上运行Topology。只需使用LocalCluster类就可以创建一个进程内的集群,例如:
import backtype.storm.LocalCluster;
LocalCluster cluster = new LocalCluster();
然后,可以使用LocalCluster对象的submitTopology方法来提交Topology。就像在StormSubmitter中相应的方法一样,submitTopology方法需要一个名字、一个Topology配置和Topology对象。然后,你可以使用killTopology方法,将Topology名称作为参数,杀死一个Topology。
关闭一个本地集群,只需要简单地调用:
cluster.shutdown();
六、 异常
1、
使用mvn命令创建项目时报错
在Maven3使用Maven2的命令,archetype:create命令已经过期,需要使用 archetype:generate 来进行代替。
因篇幅问题不能全部显示,请点此查看更多更全内容