Storm自带测试案例的运行
之前Storm安装之后,也知道了Storm的一些相关概念,那么怎么样才可以运行一个例子对Storm流式计算有一个感性的认识呢,那么下面来运行一个Storm安装目录自带的测试案例,我们的Storm安装在服务器的/usr/storm/apache-storm-0.9.6中,首先进入这个目录,执行ls可以看到有一个examples目录,这个就是Storm自带的案例,里面有一个项目storm-starter,首先确保maven的正确安装,我们执行命令: cd examples/storm-starter/ 进入项目目录,看到目录下有一个test目录,然后我们执行: mvn test 执行之后,maven会自动搜索依赖并下载相关类库最后完成项目的编译,这个时候要保持网络畅通,等待5-10分钟项目就构建完毕了,会看到目录下多出很多文件,提示BUILD SUCCESS则代表命令执行成功,如下图:

然后,此时执行下面命令运行主类中的main方法:
mvn exec:java "-Dstorm.topology=storm.starter.WordCountTopology"
代码稍微滚动几秒,然后就结束了,最后出现的错误我们可以忽略,如果运行过程中查看仔细的话,会看到中间计算对单词进行了一定的统计,中间某一时刻截图如下:

此时,这个项目我们可以通过tar命令打包,下载到本地,也可以在本地参考在Windows下安装maven的过程,和上面一样执行 mvn test ,执行之后不用执行,因为Windows下默认没有Python,所以要运行测试案例,还要安装Python,此时我们可以打开开发环境eclipse for javaee,单击"File"->"Import",进入项目导入选项,选择Maven->Existing Maven Projects,单击"Next"

然后在打开的界面,选择Browse进入浏览界面,选择我们之前使用maven编译好的项目目录storm-starter,点击Finish完成即可导入了,导入后的项目结构截图如下:

里面的错误可以暂时忽略,不影响运行,其中第一项src/jvm就是源码的存放位置:

此时,我们可以打开storm.starter包下的WordCountTopology.java源文件,这个就是刚才测试案例的主类

代码我们可以简单地看懂一些,首先是创建拓扑,然后设置的数据源所在的类,我么可以看一下RandomSetenceSpout这个类数据源代码,后来就是设置Bolt和MapReduce一样进行了计算,之前执行的时候并不是和服务一样不断执行,而是一会就结束了,通过后面2行代码我们就明白了,这里延时了10s然后将任务shutdown,大体流程就是这样

这个主类的构造方法中调用了一个命令就是执行splitsentence.py脚本,查看这个脚本可以知道该脚本导入了storm.py这个模块,主要的计算逻辑都在storm.py这个脚本所定义的方法中实现,所以之前说过必须安装python才可以正确执行,原因就在这,所以理论上storm可以实现任何语言来编写计算逻辑,只要调用父类的构造方法即可,当然我们可以使用Java直接来编写相应的逻辑
当然这个项目还有很多细节需要理解,目前就先说这些,对Storm入门的项目有一个简单的认识
Storm自带测试案例的运行的更多相关文章
- gtest命令行测试案例
使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便.同时,gtest也为我们提供了一系列的运行参数(环境变量.命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的 ...
- 运行RF测试案例,显示unable to open socket to "localhost:56505" error: [Errno 10061] 错误,且关闭RF卡死的解决办法
问题描述: 执行WEB ui测试案例后,执行请他的测试案例显示unable to open socket to "localhost:56505" error: [Errno 10 ...
- nginx整合tomcat集群并做session共享----测试案例
最近出于好奇心,研究了一下tomcat集群配置,并整合nginx,实现负载均衡,session共享,写篇记录,防止遗忘.---------菜鸡的自我修炼. 说明:博主采用一个web项目同时部署到两台t ...
- robotframework+selenium搭配chrome浏览器,web测试案例(搭建篇)
这两天发布版本 做的事情有点多,都没有时间努力学习了,先给自己个差评,今天折腾了一天, 把robotframework 和 selenium 还有appnium 都研究了一下 ,大概有个谱,先说说we ...
- Kafka吞吐量测试案例
Kafka吞吐量测试案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 领英公司参考连接:https://www.slideshare.net/JiangjieQin/produc ...
- Selenium私房菜系列5 -- 第一个Selenium RC测试案例
<Selenium简介>中讲过,Selenium RC支持多种语言编写测试案例,如:C#,Python.在工作中,我倾向于是用Python这类动态语言编写测试案例,因为这样的测试案例无需编 ...
- django第8天(在测试文件中运行django项目|单表操作)
django第8天 在测试文件中运行django项目 1.将项目配置文件数据库该为mysql,修改配置信息 PORT = '127.0.0.1' DATABASES = { 'default': { ...
- Selenium(十四):自动化测试模型介绍、模块化驱动测试案例、数据驱动测试案例
1. 自动化测试模型介绍 随着自动化测试技术的发展,演化为了集中模型:线性测试.模块化驱动测试.数据驱动测试和关键字驱动测试. 下面分别介绍这几种自动化测试模型的特点. 1.1 线性测试 通过录制或编 ...
- 编写优美的GTest测试案例
http://www.cnblogs.com/coderzh/archive/2010/01/09/beautiful-testcase.html 使用gtest也有很长一段时间了,这期间也积累了一些 ...
随机推荐
- 快速理解C#高级概念(一) Delegate委托
做.NET开发很久,最近重新温习<C#高级编程>一书.发现很多曾经似懂非懂的问题,其实也是能够慢慢钻研慢慢理解的. 所以,打算开写<C#高级编程系列>博文.其中会借鉴<C ...
- PHP数据类型转换
转自:http://www.tianzhigang.com/article.asp?id=280 PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: (int).(integer):转换成 ...
- C生成随机数,奇葩问题
今天需要生成一个随机数,奇怪的问题发生了. #include <stdio.h> #include <stdlib.h> #include <time.h> #de ...
- Androidstudio的快捷键
只记忆常用的快捷键. 1,alt+enter导包,抛异常什么的,用来自动修正的 2,Ctrl+alt+V自动补全 3,Alt+Insert 生成代码(如get,set方法,构造函数等) 4,Ctrl+ ...
- 网络安全&信息安全&系统安全常用名词汇总
拖库(脱裤) 隐写术 拖库(脱裤) 隐写术 拖库(脱裤) 隐写术 拖库(脱裤) 隐写术
- [译]git rebase
rebase就是重新定义你分支的起点, 分支上的commit将生成对应的新的commit并放在你指定的新的起点commit后, 分支上的老commit将被删除. rebase就是将你的分支从一个com ...
- VTK初学一,b_PolyVertex_CellArray多个点的绘制
#ifndef INITIAL_OPENGL #define INITIAL_OPENGL #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRend ...
- Office 2010/2007 简繁体转换按钮不见了?
注:此文章来自微软官方,原文链接:http://support.microsoft.com/kb/2459493/zh-tw 经测试可解决问题.——————————– 通常发生这样的问题,是由于繁简转 ...
- 【PHP面向对象(OOP)编程入门教程】22.把对象串行化serialize()方法,__sleep()方法,__wakeup()方法
有时候需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化), 就像我们现在想把一辆汽车通过轮船运到美国去,因为 ...
- PHP协程 详解
[开源中国] PHP 使用协同程序实现合作多任务 [风雪之隅] 在PHP中使用协程实现多任务调度