storm 经常使用类
弄
<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-core</artifactId>
<version>0.9.5</version>
</dependency>
经常使用类
用来建立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。
声明当前topology的全部stream的输出模式。
一个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
tuple是storm中的主要数据结构之中的一个,是喷口与闪电之间发送消息的基本单位。它是一个被命名的values的list,当中的每个value都能够是随意类型。
backtype.storm.tuple.Fields.Fields(String... fields)
Fields类的构造函数。形參列表为(String... fields)。
调试中的一个tuple见图1.
Spout
当spout被关闭时此方法得到调用。
void backtype.storm.spout.ISpout.nextTuple()
当该方法被调用时,要求SpoutOutputCollector喷射tuple。
void backtype.storm.spout.ISpout.ack(Object msgId)
表示从此spout喷出的带有messageID的tuple已被全然处理。
该方法的一个典型实现是把消息从队列中移走。避免被再次处理。
表示从此spout喷出的带有messageID的tuple未被全然处理。该方法的一个典型实现是把该消息再次放入队列,以便被再次发送。
backtype.storm.topology.IRichSpout
继承自ISpout与IComponent。
喷出一个tuple到默认的输出stream,此steam没有消息id,所以storm没有办法跟踪。因此对于这个tuple将永远不会调用ack()与fail()方法。
Bolt
有下面几个方法:
当这个组件的task在集群中的一台worker内被初始化的时候。该函数被调用。它向bolt提供了该bolt运行的环境。
处理输入的一个单一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 经常使用类的更多相关文章
- Storm常用的类
BaseRichSpout (消息生产者)BaseBasicBolt (消息处理者)TopologyBuilder (拓扑的构建器)Values (将数据存放到values ,发送到下个组件)Tupl ...
- Storm TimeCacheMap RotatingMap源码分析
TimeCacheMap是Twitter Storm里面一个类, Storm使用它来保存那些最近活跃的对象,并且可以自动删除那些已经过期的对象. 不过在storm0.8之后TimeCacheMap被弃 ...
- 用Storm轻松实时大数据分析【翻译】
原文地址 简单易用,Storm让大数据分析变得轻而易举. 如今,公司在日常运作中经常会产生TB(terabytes)级的数据.数据来源包括从网络传感器捕获的,到Web,社交媒体,交易型业务数据,以及其 ...
- 使用Storm实现实时大数据分析
摘要:随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战.Shruthi Kumar和Siddharth Patankar在Dr.Dobb’s上结合了汽车超速监视,为我们演示了使用Sto ...
- storm概念学习及流处理与批处理的区别
在过去10 年中,随着互联网应用的高速发展,企业积累的数据量越来越大,越来越多.随着Google MapReduce.Hadoop 等相关技术的出现,处理大规模数据变得简单起来,但是这些数据处理技术都 ...
- Twitter Storm如何保证消息不丢失
storm保证从spout发出的每个tuple都会被完全处理.这篇文章介绍storm是怎么做到这个保证的,以及我们使用者怎么做才能充分利用storm的可靠性特点. 一个tuple被”完全处理”是什么意 ...
- Twitter Storm: storm的一些常见模式
这篇文章列举出了storm topology里面的一些常见模式: 流聚合(stream join) 批处理(Batching) BasicBolt 内存内缓存 + fields grouping 组合 ...
- 流式计算之Storm简介
Storm是一个分布式的.容错的实时计算系统,遵循Eclipse Public License 1.0,Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比H ...
- Zookeeper+Kafka+Storm+HDFS实践
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. Hadoop一般用在离线的分析计算中,而storm区别于hadoop,用在实时的流式计算中,被广泛用来 ...
随机推荐
- [读书笔记]Java类载入过程
一. 类的生命周期 类从被载入到虚拟机内存中開始,到卸载出内存为止,有下面(如图)的生命周期: 以上"载入->验证->准备->解析->初始化"称为类的载入过 ...
- Altium Designer 在pcb下导入的原件引脚是绿的
当然也可能是其他规则原因导致的
- vue使用改变element-ui主题色
每个项目的主题色一般都不一样,直接用element-ui的默认主题色似乎有点不合适,还需要自己一个一个的找元素class名然后在修改样式,非常麻烦,还容易影响到包含该类名的其他元素样式,所以需要自定义 ...
- 11、DMA操作说明
先理解cache的作用CPU在访问内存时,首先判断所要访问的内容是否在Cache中,如果在,就称为“命中(hit)”,此时CPU直接从Cache中调用该内容:否则,就 称为“ 不命中”,CPU只好去内 ...
- 【例题3-5 UVA - 1583】Digit Generator
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] for (int i = 1;i <= n;i++) { 算出i是哪一个的生成元. 假设是y. 则ans[y] = min(a ...
- angular模块详解
原文: https://www.jianshu.com/p/819421ff955a 大纲 1.angular应用是模块化的 2.对模块(Module)的认识 3.模块的分类:根模块和特性模块 4.N ...
- java痛苦学习之路[十二]JSON+ajax+Servlet JSON数据转换和传递
1.首先client须要引入 jquery-1.11.1.js 2.其次javawebproject里面须要引入jar包 [commons-beanutils-1.8.0.jar.commons-c ...
- js进阶 11-19 jquery如何查找选择器的第一个父亲元素和第一个定位的父元素
js进阶 11-19 jquery如何查找选择器的第一个父亲元素和第一个定位的父元素 一.总结 一句话总结:closest()方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上.of ...
- Java工具类:给程序增加版权信息
我们九天鸟的p2p网贷系统,基本算是开发完成了. 现在,想给后端的Java代码,增加版权信息. 手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件 ...
- iOS开发Block的介绍以及Block的循环引用问题
1:block的循环引用问题最主要记住两点: 如果[block内部]使用[外部声明的强引用]访问[对象A], 那么[block内部]会自动产生一个[强引用]指向[对象A] 如果[block内部]使用[ ...