开源软件官网提供的demo无疑是学习开源软件的最好的最原始的样例。
在Storm官网里下载apache-storm-0.9.6.zip,里面\examples\storm-starter\src\jvm目录下有storm-starter demo。下面说一下如何在eclipse中运行这个demo。
1、导入源码。
新建一个java项目xxx,右键项目,导入File system,然后在From directory选中apache-storm-0.9.6\examples\storm-starter\src\jvm\storm\starter,在Into folder选中刚刚新建项目xxx的src目录。在xxx项目和create top-level folder上打上对勾选中,点击Finish导入成功。
2、导入配置文件
把apache-storm-0.9.6\conf目录下的storm.yaml复制到项目xxx的src下;
把apache-storm-0.9.6\examples\storm-starter\multilang下的整个resources文件夹复制到项目xxx的src下;
ps:demo里WordCountTopology会调用resources里面的python程序,这里体现了Storm支持多语言特性,所以本机应该还要安装Python。
3、导入依赖包
3-1、在xxx项目下新建lib文件夹,把apache-storm-0.9.6\lib下的所有jar包复制到项目lib文件夹下,然后右键项目—>Build Path—>Configuration Build Path—>Libraries—>Add Jar,选中刚刚lib文件夹下刚刚复制的所有jar包。
3-2、在apache-storm-0.9.6\examples\storm-starter目录下有个pom.xml文件,关注下面这三个依赖包,分别下载下来,然后按照上面的2-1步骤导入。OK,现在可以运行demo了。
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-stream</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
最后在eclipse中的工程结构图如下
aaarticlea/png;base64,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" alt="" />
参考:
http://blog.csdn.net/joeyon1985/article/details/41595827
http://www.cnblogs.com/tangtianfly/p/5328271.html