Windows下基于eclipse的Storm应用开发与调试

原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3971113.html

本文以一个简单的example来讲解如何开发storm应用程序

1、创建maven工程

  在eclipse下创建maven工程,可以参照http://www.cnblogs.com/tovin/p/3822985.html

  

2、修改pom.xm添加依赖包

  使用maven-assembly-plugin插件将工程依赖的jar都一起打包

  storm的<scope>设置provided,主要是因为只要编译时需要storm包,当在storm集群运行时就不要将它一起打包了。

<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>com.test</groupId>
  <artifactId>storm-example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>storm-example</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
      <dependency>
           <groupId>org.apache.storm</groupId>
         <artifactId>storm-core</artifactId>
         <version>0.9.2-incubating</version>
         <scope>provided</scope>
       </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

3、编写Topology

  (1) 编写Spout

import backtype.storm.spout.SpoutOutputCollector;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.topology.base.BaseRichSpout;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Values;

public class RandomSpout extends BaseRichSpout{
    private SpoutOutputCollector collector;
    private static String[] words = {"happy","excited","angry"};

    /* (non-Javadoc)
     * @see backtype.storm.spout.ISpout#open(java.util.Map, backtype.storm.task.TopologyContext, backtype.storm.spout.SpoutOutputCollector)
     */
    public void open(Map arg0, TopologyContext arg1, SpoutOutputCollector arg2) {
        // TODO Auto-generated method stub
        this.collector = arg2;
    }

    /* (non-Javadoc)
     * @see backtype.storm.spout.ISpout#nextTuple()
     */
    public void nextTuple() {
        // TODO Auto-generated method stub
        String word = words[new Random().nextInt(words.length)];
        collector.emit(new Values(word));
    }

    /* (non-Javadoc)
     * @see backtype.storm.topology.IComponent#declareOutputFields(backtype.storm.topology.OutputFieldsDeclarer)
     */
    public void declareOutputFields(OutputFieldsDeclarer arg0) {
        // TODO Auto-generated method stub
        arg0.declare(new Fields("randomstring"));
    }
}

 (2)编写bolt

import backtype.storm.topology.BasicOutputCollector;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.topology.base.BaseBasicBolt;
import backtype.storm.tuple.Tuple;

public class SenqueceBolt extends BaseBasicBolt{
    /* (non-Javadoc)
     * @see backtype.storm.topology.IBasicBolt#execute(backtype.storm.tuple.Tuple, backtype.storm.topology.BasicOutputCollector)
     */
    public void execute(Tuple input, BasicOutputCollector collector) {
        // TODO Auto-generated method stub
         String word = (String) input.getValue(0);
         String out = "I‘m " + word +  "!";
         System.out.println("out=" + out);
    }

    /* (non-Javadoc)
     * @see backtype.storm.topology.IComponent#declareOutputFields(backtype.storm.topology.OutputFieldsDeclarer)
     */
    public void declareOutputFields(OutputFieldsDeclarer declarer) {
        // TODO Auto-generated method stub
    }
}

  (3)编写topo

   提供cluster和Local两种运行模式,这样我们就很方便的在本地运行FirstTopo来调试我们程序了。

import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.StormSubmitter;
import backtype.storm.topology.TopologyBuilder;
import backtype.storm.utils.Utils;

public class FirstTopo {

    public static void main(String[] args) throws Exception {
        TopologyBuilder builder = new TopologyBuilder();
        builder.setSpout("spout", new RandomSpout());
        builder.setBolt("bolt", new SenqueceBolt()).shuffleGrouping("spout");
        Config conf = new Config();
        conf.setDebug(false);
        if (args != null && args.length > 0) {
            conf.setNumWorkers(3);
            StormSubmitter.submitTopology(args[0], conf, builder.createTopology());
        } else {  

            LocalCluster cluster = new LocalCluster();
            cluster.submitTopology("firstTopo", conf, builder.createTopology());
            Utils.sleep(100000);
            cluster.killTopology("firstTopo");
            cluster.shutdown();
        }
    }
}

  (4)运行结果

    本地运行时,在eclipse中的输出:

    

   在storm集群中运行时输出可以通过Storm UI进行查看

    

原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3971113.html

时间: 2024-10-19 06:34:42

Windows下基于eclipse的Storm应用开发与调试的相关文章

Windows下基于eclipse的Spark应用开发环境搭建

原创文章,转载请注明: 转载自www.cnblogs.com/tovin/p/3822985.html 一.软件下载 maven下载安装 :http://10.100.209.243/share/soft/apache-maven-3.2.1-bin.zip       jdk下载安装:          http://10.100.209.243/share/soft/jdk-7u60-windows-i586.exe(32位)         http://10.100.209.243/sh

[z]Windows 下基于 Eclipse 的可视化远程 Linux C/C++ 开发环境搭建

http://blog.csdn.net/lostaway/article/details/8086056 1.简介 Windows 下远程 Linux 开发工具,比较著名的就是 WinGDB 和 Magic C++.都是商业软件,而且配置复杂,据说还不稳定.其实,我们想要的就是个图形环境 IDE,而且是直接操作的远程 Linux 环境.经过若干的实践,发现使用 SecureCRT + Eclipse 基于 X11 转发即可实现可视化远程 Linux 开发.先附上最终效果图: 2.环境&软件准备

在Windows下用Eclipse+CDT+MinGW搭建C++开发平台

本文提供了在Windows下用Eclipse+CDT+MinGW搭建C / C++开发平台的方法, 测试平台为Windows XP Sp2 CHS. 以下软件均为Windows平台下的版本. 1.安装JDK,目的是为了Eclipse的运行.目前版本是jdk-1_5_0_06-windows-i586-p.exe ,下载地址http://java.sun.com/javase/downloads/index.jsp.仅安装JDK即可.假设安装路径为D:\java\JDK.配置系统环境变量(右键点击

在windows下用eclipse + pydev插件来配置python的开发环境

一.安装 python 可以到网上下个Windows版的python,官网为:https://www.python.org/downloads/下好后直接安装就ok了.最后记得配置一下环境变量,具体操作如下: 1)在计算机属性的环境变量配置中找到path, 2 )编辑path值,添加你安装的python路径, 3)检验python是否安装配置成功,打开cmd,输入python,如果出现以下界面,则说 明你的python安装成功了 二.安装eclipse插件 装插件的前提是先安装eclipse,e

转:windows 下的 eclipse安装goclipse 配置golang开发环境

windows 下的 eclipse安装goclipse 配置golang开发环境 windows 下的 eclipse安装goclipse 配置golang开发环境,捎带介绍了LiteIDE golang的配置 1. 下载goclipse eclipse plugins http://pan.baidu.com/s/1c0weLgO 安装完插件后,重启可以看到eclipse的右上角有个golang logo , 地鼠图标: 2. 下载golang,调试tools 下载Golang Window

eclipse下使用cygwin的方法(Windows下用eclipse玩gcc/g++和gdb)

明天就回国了,今晚回国前写写如何配置eclipse和CDT.这个配置方法网上讨论不是很多,可能用的人少,毕竟Windows上写C++程序多数喜欢VS,即使写的是Linux程序,很多人仍然会用VS(说只喜欢用VI的人我佩服).的确VS很强大,但我也geek一回,使用eclipse做C++程序(用VI才是真正的geek?好吧,我就这水准了,反正我会用VI,但不习惯VI).希望这篇小小的文章能帮助想在Windows平台上使用gcc/g++和gdb并利用IDE调试程序的人.也希望我们谈到g++和gcc的

(3)windows下hadoop+eclipse环境搭建

(1)环境说明 hadoop的集群环境我已经在虚拟机上搭建并能正常运行(见前2篇文章),现在我要在windows下搭建hadoop+eclipse的开发环境. (2)安装hadoop-eclipse-plugin-1.1.2.jar插件 hadoop-eclipse-plugin-1.1.2.jar这个插件大家可以自己编译,或者直接到网上下载.我是直接在网上下载安装. 下载好后,将hadoop-eclipse-plugin-1.1.2.jar放到eclipse安装目录下的plugins文件夹下.

在Windows上使用Eclipse配置Hadoop MapReduce开发环境

在Windows上使用Eclipse配置Hadoop MapReduce开发环境 1. 系统环境及所需文件 windows 8.1 64bit Eclipse (Version: Luna Release 4.4.0) hadoop-eclipse-plugin-2.7.0.jar hadoop.dll & winutils.exe 2. 修改Master节点的hdfs-site.xml 添加如下内容 <property> <name>dfs.permissions<

ezgo下安装eclipse及搭建android开发环境

1. JDK 即 Java Development Kit,Java 开发工具包 ezgo11 本来就已预装和配置了JDK,因此不需要再去下载安装,也不许要配置环境 验证:打开终端 $ java -version 2. 安装SDK Android SDK,即 Android Software Development Kit,Android 软件开发工具包. 下载地址:get android SDK 这里我是下载SDK only(在页面的下方有一个[DOWNLOAD FOR OTHER PLATF