eclipse 运行maven项目_Apache Storm v2.0入门项目的开发、测试和运行(IDEA/Maven)

第一个Apache Storm v2.0流计算入门项目的开发、测试和运行(IDEA/Maven)

fff4628c921a8bbfc3444197ddc50783.png

关于流计算框架Apache Storm最新版的安装,可以参考:

流计算框架-最新版Apache Storm v2.0单机模式安装详细步骤

流计算框架Apache Storm核心概念、架构设计

一、基于IDEA/Maven创建一个Storm应用

应用名称:firststorm

8eb093ab1067488e1047f88865a31e2d.png

二、添加storm-client的Maven jar包依赖

storm-client 依赖包信息,添加到项目的pom.xml文件中。

org.apache.storm

storm-client

2.0.0

cc34ddbfb38cde5941410d3e12d5dfb5.png

maven会自动下载相关依赖并放到Maven Dependencies下,这些jar包可以点击下拉查看,并且会自动添加到项目classpath中,作为编译使用,等jar包全部下载完毕,现在开始编写具体的计算逻辑了,在这个项目中我们把所有的类都建立在包com.rickie.bigdata.firststorm下。

8b71f10f440fc89ebe4c50592256453e.png

storm提供了两种运行模式:本地模式(Local Mode)和分布式模式。本地模式针对开发调试storm topologies非常有用。

因为多数程序开发者都是使用windows系统进行程序开发,如果在本机不安装storm环境的情况下,如何在本地开发、调试storm程序呢?你可以参考本文提供的解决方案。

如下来自Storm 官方文档:

http://storm.apache.org/releases/2.0.0-SNAPSHOT/Local-mode.html

Local Mode

Local mode simulates a Storm cluster in process and is useful for developing and testing topologies. Running topologies in local mode is similar to running topologies on a cluster.

To run a topology in local mode you have two options. The most common option is to run your topology with storm local instead of storm jar.

This will bring up a local simulated cluster and force all interactions with nimbus to go through the simulated cluster instead of going to a separate process.

If you want to do some automated testing but without actually launching a storm cluster you can use the same classes internally that storm local does.

To do this you first need to pull in the dependencies needed to access these classes. For the java API you should depend on storm-server as a test dependency.

To create an in-process cluster, simply use the LocalCluster class.

如上文所述,使用本地模式(Local Mode),需要先引入storm-server 依赖包。

org.apache.storm

storm-server

2.0.0

test

fbafaabef25ef98d617d265256494dda.png

引入的storm-server 依赖包。

24431dfc6062fc37fcf14b7fe647055e.png

在本地模式上运行topology类似在一个集群上运行topology。

创建一个本地集群,大致代码如下所示:

  • import org.apache.storm.LocalCluster;
  • LocalCluster cluster = new LocalCluster();
  • 提交集群使用submitTopology,
  • 杀死集群使用killTopology
  • 关闭一个本地集群使用cluster.shutdown();

完整代码可以参考下面。

三、Storm 应用的代码逻辑开发

(1)首先建立RandomSpout类作为数据源,并且继承于父类BaseRichSpout,确定后可以看到系统自动补全3个方法:nextTuple,open和declareOutputFields。

a54c793910578beb8c42870682de3b72.png

我们现在就需要重写这3个方法,open方法是数据源的初始化,nextTuple的作用是把Tuple发送至下游,declareOutputFields用来定义输出字段,下面我们手动分配一个数组,并且随机取里面的元素,代码如下:

package com.rickie.bigdata;

import org.apache.storm.spout.SpoutOutputCollector;

import org.apache.storm.task.TopologyContext;

import org.apache.storm.topology.OutputFieldsDeclarer;

import org.apache.storm.topology.base.BaseRichSpout;

import org.apache.storm.tuple.Fields;

import org.apache.storm.tuple.Values;

import java.util.Map;

import java.util.Random;

public class RandomSpout extends BaseRichSpout {

private SpoutOutputCollector collector;

private static String[] words = {"Rickie

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值