• Storm入门之第二章


    1、准备开始

    本章创建一个Storm工程和第一个Storm拓扑结构。

    需要提供JER版本在1.6以上,下载地址http://www.java .com/downloads/

    2、操作模式

    Storm的操作模式,有两种方式:

    本地模式

    在本地模式下,Storm拓扑结构运行在本地计算机的单一JVM进程上,这个模式用于开发、测试以及调试,因为这是观察所有组件如何协同工作的最简单方法。在这种模式下,可以调整参数,观察拓扑结果如何在不同的Storm配置环境下进行。要在本地模式下运行,要下载Storm开发依赖,以便用来开发并测试我们的拓扑结构。在创建第一个Storm工程以后,就会明白如何使用本地模式。

    Note:在本地模式下,跟在集群环境运行很像。不过很有必要确认一下所有组件都是线程安全的,因为当把它们部署到远程模式时,可能会运行在不同的JVM进程甚至不同的物理机上,这个时候它们之间没有直接的通讯或共享内存。

    本章的所有例子都是运行在本地模式下。

    远程模式

    在远程模式下,向Storm集群提交拓扑,它通常由许多运行在不同机器上的流程组成。远程模式不会出现调试信息,因此也称作生产模式。不过在单一开发机上建立一个Storm集群是一个好主意,可以部署到生产环境之前,用来确认拓扑在集群环境下没有任何问题。

    第六章介绍远程模式的内容,以及附录B介绍如何安装一个Storm集群。

    3、Hello World

    创建一个简单的拓扑,统计单词数量。这是一个非常强大的拓扑,因为能够扩展到几乎无限大的规模,而且只需要做一些小修改,就能用它构建一个统计系统。

    要创建这个拓扑,要用一个spout读取文本,第一个bolt用来标准化单词,第二个bolt为单词计数,如下图:

    源代码在git上有,地址为https://github.com/storm-book/examples-ch02-getting_started/zipball/master

    Java安装检查

    检查Java版本是否符合要求,1.6以及以上。

    guosong@guosong:~$ java -version
    java version "1.7.0_55"
    OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1)
    OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)

    创建工程

    下载Storm依赖包,这些是一些jar包,要把它们添加到应用类路径,可以采用如下两种方式之一完成:

    • 下载所有依赖,解压缩它们,把它们添加到类路径
    • 使用Apache Maven

    Note:Maven是一个软件项目管理的综合工具,可以用来管理项目的开发周期的许多方面,从包以来到版本发布过程。

    Maven源码安装:

    1、下载maven,地址http://maven.apache.org/download.cgi

    2、解压缩到路径/home/guosong/programs/apache-maven-3.2.2下

    3、配置环境变量,修改/etc/profile文件,添加如下内容:

    export M2_HOME=/home/guosong/programs/apache-maven-3.2.2
    export M2=$M2_HOME/bin
    export PATH=$M2:$PATH
    

    设置生效,source /etc/profile

    4、测试

    guosong@guosong:~/programs/apache-maven-3.2.2$ mvn -version
    Warning: JAVA_HOME environment variable is not set.
    Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T21:51:42+08:00)
    Maven home: /home/guosong/programs/apache-maven-3.2.2
    Java version: 1.7.0_55, vendor: Oracle Corporation
    Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
    Default locale: zh_CN, platform encoding: UTF-8
    OS name: "linux", version: "3.13.0-24-generic", arch: "amd64", family: "unix"
    

    有一个waring,提示没有设置JAVA_HOME

    需要增加JAVA_HOME设置,重新配置后变量如下:

    export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/                         
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    
    export M2_HOME=/home/guosong/programs/apache-maven-3.2.2
    export M2=$M2_HOME/bin
    export PATH=$M2:$PATH
    

    由于ubuntu默认下安装Java的openjdk版本没有tools.jar包,还需要安装:

     sudo apt-get install openjdk-7-jdk
    

    再次检测:

    guosong@guosong:~/programs/apache-maven-3.2.2$ mvn -version
    Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T21:51:42+08:00)
    Maven home: /home/guosong/programs/apache-maven-3.2.2
    Java version: 1.7.0_55, vendor: Oracle Corporation
    Java home: /usr/lib/jvm/java-7-openjdk-amd64/jre
    Default locale: zh_CN, platform encoding: UTF-8
    OS name: "linux", version: "3.13.0-24-generic", arch: "amd64", family: "unix"
    

    已经ok了。

    安装的参考链接:

    1、http://albertcn.blog.163.com/blog/static/2094201452012622105213493/

    2、http://www.cnblogs.com/dyllove98/archive/2013/07/08/3177900.html

    Note:Storm的Maven依赖引用运行Storm本地模式的所有库。

    要运行我们的拓扑,可以编写一个包含基本组件的pom.xml文件,例如如下:

        <project xmlns="http://maven.apache.org/POM/4.0.0"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                 http://maven.apache.org/xsd/maven-4.0.0.xsd">
                 <modelVersion>4.0.0</modelVersion>
                 <groupId>storm.book</groupId>
                 <artifactId>Getting-Started</artifactId>
                 <version>0.0.1-SNAPSHOT</version>
                 <build>
                     <plugins>
                         <plugin>
                             <groupId>org.apache.maven.plugins</groupId>
                             <artifactId>maven-compiler-plugin</artifactId>
                             <version>2.3.2</version>
                             <configuration>
                                 <source>1.6</source>
                                 <target>1.6</target>
                                 <compilerVersion>1.6</compilerVersion>
                             </configuration>
                         </plugin>
                     </plugins>
                 </build>
                 <repositories>
                     <!-- Repository where we can found the storm dependencies -->
                     <repository>
                         <id>clojars.org</id>
                         <url>http://clojars.org/repo</url>
                     </repository>
                 </repositories>
                 <dependencies>
                     <!-- Storm Dependency -->
                     <dependency>
                         <groupId>storm</groupId>
                         <artifactId>storm</artifactId>
                         <version>0.6.0</version>
                     </dependency>
                 </dependencies>
        </project>

    开头几行指定工程名称和版本号,然后添加一个编译器插件,告知Maven我们的代码要用Java1.7变异。接下来我们定义Maven仓库(Maven支持同一个工程指定多个仓库)。clojars是存放Storm依赖的仓库。Maven会为运行本地模式自动下载必要的所有子包依赖。

    一个典型的Maven Jave工程会拥有如下结构:

    guosong@guosong:~/code/storm/HelloWorld$ tree
    .
    ├── pom.xml
    ├── resources
    └── src
        └── main
            └── java
                ├── bolts
                └── spouts
    

    java目录下的子目录包含我们的代码,把要统计单词数的文件保存在resources目录下。

    创建第一个Topology 

    参考链接

    1、http://ifeve.com/getting-started-with-storm-2/

  • 相关阅读:
    Django知识总结(一)
    Django知识总结(二)
    Django知识总结(三)
    机器学习领域主要术语的英文表达
    Python的进程与线程--思维导图
    MySQL数据库--思维导图
    5.18 每日小三练
    5.14 每日小三练
    5.12 每日小三练
    5.9 每日小三练
  • 原文地址:https://www.cnblogs.com/gsblog/p/3828116.html
Copyright © 2020-2023  润新知