基础知识

Storm是一个分布式的,可靠的,容错的数据流处理系统。它会把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务。Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt, bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt。你可以想象一下,一个Storm集群就是在一连串的bolt之间转换spout传过来的数据。

概念解释:

  • spout: 读取原始数据为bolt提供数据。
  • bolt: 从spout或其它bolt接收数据,并处理数据,处理结果可作为其它bolt的数据源或最终结果。
  • nimbus: 主节点的守护进程,负责为工作节点分发任务。
  • topology: 拓扑结构,Storm的一个任务单元。
  • define field(s): 定义域,由spout或bolt提供,被bolt接收。

安装:

安装 zookeeper :

  • 下载 zookeeper :http://zookeeper.apache.org/releases.html#download
  • 将 zookeeper-3.4.7.tar.gz 解压到目录,D:\bin\zookeeper-3.4.7。
  • 复制文件 D:\bin\zookeeper-3.4.7\conf\zoo_sample.cfg 为同目录下的 zoo.cfg。
  • 根据需要修改zoo.cfg的内容。
  • 运行 D:\bin\zookeeper-3.4.7\bin\zkServer.cmd 。

安装 storm :

运行出错处理 :

  • 如果报Java版本问题,请安装jdk1.7,并正确设置 JAVA_HOME。
  • 设置环境变量 STORM_HOME=D:\bin\apache-storm-0.10.0 。
  • 设置环境变量 STORM_CONF_DIR=%STORM_HOME%\conf 。
  • 出现“java.net.malformedurlexception unknown protocol D”错误,请设置环境变量 STORM_LOGBACK_CONFIGURATION_FILE=file:///D:/bin/apache-storm-0.10.0/log4j2/cluster.xml
  • 如果报“Unable to delete file”错误,是storm的一个bug,0.8.2版本还没有解决,这个错误在cluster.shutdown();时候抛出。用0.10.0版本不会出现这样的问题。

Storm Web UI 界面如下:

开始一个简单的例子

  • class WordReader :从文件中读取文本内容,每读取一行 emit 给 bolts。
  • class WordNormalizer :将一行文本内容按单词切分。
  • class WordCounter :统计单词出现的次数。
  • class TopologyMain :创建拓扑结构。

源代码见文件附件:examples-ch02-getting_started.zip。

本机调试

在开发工具中,直接运行TopologyMain,即可开始体验strom

把Topology发布到集群中

需要把 LocalCluster 换成 StormSubmitter 并调用submitTopology方法

    //LocalCluster cluster = new LocalCluster();
//cluster.submitTopology("Count-Word-Topology-With-Refresh-Cache", conf,
//builder.createTopology());
StormSubmitter.submitTopology("Count-Word-Topology-With_Refresh-Cache", conf,
builder.createTopology());
//Thread.sleep(1000);
//cluster.shutdown();

接下来,把源码压缩成一个jar包,运行Storm客户端命令,把拓扑提交给集群。如果你已经使用了Maven, 你只需要在命令行进入源码目录运行:mvn package。

现在你生成了一个jar包,使用storm jar命令提交拓扑。命令格式:storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3。

对于这个例子,在拓扑工程目录下面运行:

storm jar Topologies-0.0.1-SNAPSHOT.jar countword.TopologyMain src/main/resources/words.txt

通过这些命令,你就把拓扑发布集群上了。

如果想停止或杀死它,运行:

storm kill Count-Word-Topology-With-Refresh-Cache

参考资料

storm 入门:http://ifeve.com/wp-content/uploads/2014/03/Getting-Started-With-Storm-Jonathan-Leibiusky-Gabriel-E_1276.pdf
官方文档:http://storm.apache.org/documentation.html

说明:

1.此文档中的文件夹位置请根据需要修改。
2.此文档中中使用的软件版本不一定是最新的。

storm在windows系统下安装调试的更多相关文章

  1. storm在linux系统下安装调试

    安装: 安装 zookeeper : 下载 zookeeper :http://zookeeper.apache.org/releases.html#download. 将 zookeeper-3.4 ...

  2. Windows系统下安装zabbix客户端

    简单介绍如何在windows系统下安装zabbix客户端 1. 首先下载和zabbix服务端大版本相同的windows客户端    例如我服务端安装的是zabbix-3.4.14.tar.gz     ...

  3. Windows系统下安装MySQL 8.0.11数据库

    MySQL数据库是常用的数据库之一,而且该数据库开源免费,所以很多公司在使用.本文记录如何在Windows系统下安装MySQL数据库,本次安装的版本号为8.0.11,这个版本是当前的最新版本,据宣传, ...

  4. tomact在windows系统下安装

    一.下载 下载地址: https://tomcat.apache.org/download-90.cgi 7,8,9的版本都可以下,这里下载最新版本 注意:Binary是编译好的,可以直接使用的版本, ...

  5. JDK8在windows系统下安装

    一.下载 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html#JDK8 目前大部分公司内部使用的还是jdk ...

  6. nssm常用命令(在Windows系统下安装服务的工具)

    nssm install servername //创建servername服务 nssm start servername //启动服务 nssm stop servername //暂停服务 ns ...

  7. windows系统下安装MySQL

    可以运行在本地windows版本的MySQL数据库程 序自从3.21版以后已经可以从MySQL AB公司获得,而且 MYSQL每日的下载百分比非常大.这部分描述在windows上安装MySQL的过程. ...

  8. Tomcat Windows 系统下安装及注意事项

    1 获取Tomcat 安装包  http://tomcat.apache.org/ tar.gz 文件是Linux系统下的安装版本 exe文件是 Windows系统下的安装版本 zip 文件是Wind ...

  9. 无光驱在32位windows系统下安装64位windows系统

    位的系统. 大家都知道,32位的操作系统最多只能支持3.2G的内存,现在内存白菜价,很多人都在原有基础上购入新内存,这样最少也有4G了,为了让内存不浪费,我 们只有升级到64位操作系统.但是很多朋友又 ...

随机推荐

  1. Androidi性能优化之Java代码优化(摘自Android性能优化一书)

    代码优化不是应用开发的首要任务,提供良好的用户体验并专注于代码的可维护性,这才是你的首要任务.事实上,代码优化应该是最后才做,甚至完全可能不去做,不过,良好的优化可以使程序性能直接达到一个可接受的水平 ...

  2. Java Hour 14 多线程基础

    有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 本文作者Java 现经验约为13 Hour,请各位不吝赐教. 多线程 这个是基 ...

  3. 手把手教你在Windows下使用MinGW编译libav(参考libx264的编入)

    转自:http://www.th7.cn/Program/cp/201407/242762.shtml 手把手教你在Windows下使用MinGW编译libav libav是在Linux下使用纯c语言 ...

  4. Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2) B. Bear and Three Musketeers 枚举

                                          B. Bear and Three Musketeers                                   ...

  5. 作用域与闭包:this,var

    var 作用域 先来看个简单的例子: var parent = function () { var name = "parent_name"; var age = 13; var ...

  6. MATLAB信号与系统分析(四)——离散信号与系统的复频域分析及MATLAB实现

    一.系统的z变换和反变换 1.利用部分分式展开求解逆Z变换: 2.例子 3.Z变换的MATLAB函数 clear all f=sym('cos(a*k)'); F=ztrans(f) F=sym('z ...

  7. VMware Workstation卸载清理批处理命令

    echo offclsecho "flag">>%windir%\system32\test.logif not exist %windir%\system32\tes ...

  8. hbase shell中log4j重复问题

    [root@centos ~]# hbase shellSLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding ...

  9. cookie 暂时保存内容与恢复

    <script type="text/javascript"> $(function(){ $('.ycb_anniu').click(function(){ $.co ...

  10. LoadRunner11支持的浏览器小结

    LoadRunner11录制脚本时不能打开IE浏览器,解决方案有以下几个步骤: l  LoadRunner11支持的浏览器版本最高是ie9,把浏览器版本换成ie9; l  打开IE选项----高级—去 ...