大数据(实战型)数据分析专家、首席分析师高级

在上一篇博客(Storm实时大数据处理(一))中,我介绍了Storm的基本概念和原理,本文我们开始基于Storm提供的API开发自己的应用程序。入门Storm应用程序开发很简单,这得益于设计者为我们精心设计的简单API。

一、搭建开发环境

在生产环境中,Storm集群运行在基于Linux操作系统的分布式集群中,可喜的是,Storm提供了本地模式(Local Mode)来方便开发者开发Storm Topology,而且本地模式支持Windows操作系统,因此搭建一个本地模式的Storm开发环境很简单。在已经搭建好的Java开发环境中,在Eclipse中安装配置好Maven项目管理工具即可,就这么简单,一步到位!

二、新建项目

在Eclipse中新建一个Maven Project,新建成功后,项目里面会有一个pom.xml文件,要开发Storm应用程序,需要Storm的jar包,之前的做法可能是自己去下载Storm的jar包,然后再导入到自己的项目中,有了Maven以后,这一切被彻底革命掉了,需要使用任何第三方jar包,直接去Maven中央仓库搜索一下,然后把依赖复制到pom.xml文件中即可,Maven会帮我们管理好项目依赖的jar包。Storm现在已经有很多版本了,在Maven中央仓库搜索以后,自己选择一个Release稳定版即可。我使用的是Storm 0.9.3版本,加入Storm依赖以后的pom.xml文件内容如下:

  1.  
    <pre name="code" class="html"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2.  
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3.  
    <modelVersion>4.0.0</modelVersion>
  4.  
     
  5.  
    <groupId>com.yistory</groupId>
  6.  
    <artifactId>WordCount</artifactId>
  7.  
    <version>0.0.1-SNAPSHOT</version>
  8.  
    <packaging>jar</packaging>
  9.  
     
  10.  
    <name>WordCount</name>
  11.  
    <url>http://maven.apache.org</url>
  12.  
     
  13.  
    <properties>
  14.  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  15.  
    </properties>
  16.  
     
  17.  
    <dependencies>
  18.  
    <dependency>
  19.  
    <groupId>junit</groupId>
  20.  
    <artifactId>junit</artifactId>
  21.  
    <version>3.8.1</version>
  22.  
    <scope>test</scope>
  23.  
    </dependency>
  24.  
    <!-- https://mvnrepository.com/artifact/org.apache.storm/storm-core -->
  25.  
    <dependency>
  26.  
    <groupId>org.apache.storm</groupId>
  27.  
    <artifactId>storm-core</artifactId>
  28.  
    <version>0.9.3</version>
  29.  
    </dependency>
  30.  
    </dependencies>
  31.  
    </project>
 

三、编写Storm代码

本项目的功能就是统计生成的句子中各个单词出现的次数,业务逻辑很简单,我们的重点是关注怎么开发Storm应用程序。开发Storm应用程序的过程,就是搭建一个拓扑的过程,其实就是构造一个有向无环图。有向无环图由结点和有向边组成,而在Storm中,结点就是Spout或者Bolt,而边就是Spout和Bolt之间或者是Bolt和Bolt之间连接关系。
Storm把Topology中的流转的数据抽象为Stream(流),流的源头就是Spout,在这个例子中,随机生成句子的结点就是Spout,而Spout的具体体现形式就是一些特殊的类。在Storm中,编写Spout类的方法有2种,其一是实现IRichSpout接口,比如新建一个类WordEmitter,让其实现该接口,这是Eclipse会提醒你要实现该接口的所有方法,选择添加实现以后会自动生成一下代码。

猜你喜欢

转载自www.cnblogs.com/abc1168/p/9610259.html
今日推荐