<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-core</artifactId>
<version>0.9.5</version>
</dependency>

经常使用类

backtype.storm.topology.TopologyBuilder

用来建立topology。

SpoutDeclarer backtype.storm.topology.TopologyBuilder.setSpout(String id, IRichSpout spout, Number parallelism_hint)

给topology设置spout。parallelism_hint为将要运行这个spout的任务数。每一个任务相应着一个线程。

BoltDeclarer backtype.storm.topology.TopologyBuilder.setBolt(String id, IRichBolt bolt, Number parallelism_hint)

给topology设置bolt。



backtype.storm.Config

此类拥有一系列成员方法。用来设置相应的參数。



void backtype.storm.StormSubmitter.submitTopology(String name, Map stormConf, StormTopology topology) 

向storm集群提交topology。

backtype.storm.topology.IComponent
一个接口,表明topology的组件。
void backtype.storm.topology.IComponent.declareOutputFields(OutputFieldsDeclarerdeclarer)

声明当前topology的全部stream的输出模式。

backtype.storm.topology.OutputFieldsDeclarer
输出字段的声明者。

void backtype.storm.topology.OutputFieldsDeclarer.declare(Fields fields)
用默认的stream id进行声明。

void backtype.storm.topology.OutputFieldsDeclarer.declareStream(String streamId, Fields fields)
用指定的stream id与field进行声明
backtype.storm.task.TopologyContext

一个topologyContext会在bolt的prepare()和spout的open()方法中传递给bolt和spout。该类包括了组件在topology内的位置信息,如任务id,输入与输出等。



List<Integer> backtype.storm.spout.SpoutOutputCollector.emit(List<Object> tuple)

喷出一个tuple到默认的输出stream。此steam没有消息id,所以storm没有办法跟踪,因此对于这个tuple将永远不会调用ack()与fail()方法。

List<Integer> backtype.storm.task.OutputCollector.emit(Tuple anchor, List<Object> tuple)

喷射一个新的tuple到默认的抛锚在一个单一tuple的流上。

Tuple

backtype.storm.tuple.Tuple

tuple是storm中的主要数据结构之中的一个,是喷口与闪电之间发送消息的基本单位。它是一个被命名的values的list,当中的每个value都能够是随意类型。

backtype.storm.tuple.Fields.Fields(String... fields)

Fields类的构造函数。形參列表为(String... fields)。

调试中的一个tuple见图1.
图1:调试中的一个tuple

Spout

backtype.storm.spout.ISpout
这是spout类的核心接口。它有一下几种方法。

void backtype.storm.spout.ISpout.open(Map conf, TopologyContext context, SpoutOutputCollector collector)
当这个组件的task在集群中的一台worker内被初始化的时候,该函数被调用。它向spout提供了该spout运行的环境。
void backtype.storm.spout.ISpout.close()

当spout被关闭时此方法得到调用。
void backtype.storm.spout.ISpout.activate()
当spout从抑制状态变为激活状态时调用。

void backtype.storm.spout.ISpout.deactivate()
当spout被抑制时调用。此时它的nextTuple()方法不会被调用。

void backtype.storm.spout.ISpout.nextTuple()

当该方法被调用时,要求SpoutOutputCollector喷射tuple。

void backtype.storm.spout.ISpout.ack(Object msgId)

表示从此spout喷出的带有messageID的tuple已被全然处理。

该方法的一个典型实现是把消息从队列中移走。避免被再次处理。

void backtype.storm.spout.ISpout.fail(Object msgId)

表示从此spout喷出的带有messageID的tuple未被全然处理。该方法的一个典型实现是把该消息再次放入队列,以便被再次发送。



backtype.storm.topology.IRichSpout

继承自ISpout与IComponent。

backtype.storm.spout.SpoutOutputCollector
用于spout的tuple喷射。注意与backtype.storm.task.OutputCollector的差别。
List<Integer> backtype.storm.spout.SpoutOutputCollector.emit(List<Object> tuple)

喷出一个tuple到默认的输出stream,此steam没有消息id,所以storm没有办法跟踪。因此对于这个tuple将永远不会调用ack()与fail()方法。

Bolt

backtype.storm.task.IBolt
这是bolt类的核心接口。

有下面几个方法:

void backtype.storm.task.IBolt.prepare(Map stormConf, TopologyContext context, OutputCollector collector)

当这个组件的task在集群中的一台worker内被初始化的时候。该函数被调用。它向bolt提供了该bolt运行的环境。

void backtype.storm.task.IBolt.execute(Tuple input)

处理输入的一个单一tuple。




backtype.storm.topology.IRichBolt

继承自IBolt与IComponent。

backtype.storm.task.OutputCollector

输出收集器用于发射来自IRichBolt的tuple。

List<Integer> backtype.storm.task.OutputCollector.emit(Tuple anchor, List<Object> tuple)

喷射一个新的tuple到默认的抛锚在一个单一tuple的流上。

List<Integer> backtype.storm.task.OutputCollector.emit(String streamId, List<Object> tuple)

向指定的stream中喷射数据。

backtype.storm.topology.InputDeclarer.shuffleGrouping(String componentId)

用于声明接收哪些spout或bolt的输出作为该bolt的输入。

BoltDeclarer backtype.storm.topology.InputDeclarer.localOrShuffleGrouping(String componentId)

用于声明接收哪些spout或bolt的输出作为该bolt的输入。

BoltDeclarer backtype.storm.topology.InputDeclarer.fieldsGrouping(String componentId, String streamId, Fields fields)

用于声明接收指定spout或bolt的指定stream的指定fields作为该bolt的输入。

BoltDeclarer backtype.storm.topology.InputDeclarer.allGrouping(String componentId, String streamId)

用于声明接收指定spout或bolt的指定stream作为该bolt的输入。

样例


storm 经常使用类的更多相关文章

  1. Storm常用的类

    BaseRichSpout (消息生产者)BaseBasicBolt (消息处理者)TopologyBuilder (拓扑的构建器)Values (将数据存放到values ,发送到下个组件)Tupl ...

  2. Storm TimeCacheMap RotatingMap源码分析

    TimeCacheMap是Twitter Storm里面一个类, Storm使用它来保存那些最近活跃的对象,并且可以自动删除那些已经过期的对象. 不过在storm0.8之后TimeCacheMap被弃 ...

  3. 用Storm轻松实时大数据分析【翻译】

    原文地址 简单易用,Storm让大数据分析变得轻而易举. 如今,公司在日常运作中经常会产生TB(terabytes)级的数据.数据来源包括从网络传感器捕获的,到Web,社交媒体,交易型业务数据,以及其 ...

  4. 使用Storm实现实时大数据分析

    摘要:随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战.Shruthi Kumar和Siddharth Patankar在Dr.Dobb’s上结合了汽车超速监视,为我们演示了使用Sto ...

  5. storm概念学习及流处理与批处理的区别

    在过去10 年中,随着互联网应用的高速发展,企业积累的数据量越来越大,越来越多.随着Google MapReduce.Hadoop 等相关技术的出现,处理大规模数据变得简单起来,但是这些数据处理技术都 ...

  6. Twitter Storm如何保证消息不丢失

    storm保证从spout发出的每个tuple都会被完全处理.这篇文章介绍storm是怎么做到这个保证的,以及我们使用者怎么做才能充分利用storm的可靠性特点. 一个tuple被”完全处理”是什么意 ...

  7. Twitter Storm: storm的一些常见模式

    这篇文章列举出了storm topology里面的一些常见模式: 流聚合(stream join) 批处理(Batching) BasicBolt 内存内缓存 + fields grouping 组合 ...

  8. 流式计算之Storm简介

    Storm是一个分布式的.容错的实时计算系统,遵循Eclipse Public License 1.0,Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比H ...

  9. Zookeeper+Kafka+Storm+HDFS实践

    Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. Hadoop一般用在离线的分析计算中,而storm区别于hadoop,用在实时的流式计算中,被广泛用来 ...

随机推荐

  1. [读书笔记]Java类载入过程

    一. 类的生命周期 类从被载入到虚拟机内存中開始,到卸载出内存为止,有下面(如图)的生命周期: 以上"载入->验证->准备->解析->初始化"称为类的载入过 ...

  2. Altium Designer 在pcb下导入的原件引脚是绿的

    当然也可能是其他规则原因导致的

  3. vue使用改变element-ui主题色

    每个项目的主题色一般都不一样,直接用element-ui的默认主题色似乎有点不合适,还需要自己一个一个的找元素class名然后在修改样式,非常麻烦,还容易影响到包含该类名的其他元素样式,所以需要自定义 ...

  4. 11、DMA操作说明

    先理解cache的作用CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容:否则,就 称为“ 不命中”,CPU只好去内 ...

  5. 【例题3-5 UVA - 1583】Digit Generator

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] for (int i = 1;i <= n;i++) { 算出i是哪一个的生成元. 假设是y. 则ans[y] = min(a ...

  6. angular模块详解

    原文: https://www.jianshu.com/p/819421ff955a 大纲 1.angular应用是模块化的 2.对模块(Module)的认识 3.模块的分类:根模块和特性模块 4.N ...

  7. java痛苦学习之路[十二]JSON+ajax+Servlet JSON数据转换和传递

    1.首先client须要引入 jquery-1.11.1.js 2.其次javawebproject里面须要引入jar包  [commons-beanutils-1.8.0.jar.commons-c ...

  8. js进阶 11-19 jquery如何查找选择器的第一个父亲元素和第一个定位的父元素

    js进阶 11-19 jquery如何查找选择器的第一个父亲元素和第一个定位的父元素 一.总结 一句话总结:closest()方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上.of ...

  9. Java工具类:给程序增加版权信息

       我们九天鸟的p2p网贷系统,基本算是开发完成了.   现在,想给后端的Java代码,增加版权信息.   手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件 ...

  10. iOS开发Block的介绍以及Block的循环引用问题

    1:block的循环引用问题最主要记住两点: 如果[block内部]使用[外部声明的强引用]访问[对象A], 那么[block内部]会自动产生一个[强引用]指向[对象A] 如果[block内部]使用[ ...