storm手册

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Storm手册
一.Storm的配置文件各个选项及释义
二.Storm中spout各个方法含义
1.open方法
当一个Task被初始化的时候会调用此open方法。

一般都会在此方法中对发送Tuple的对象SpoutOutputCollector和配置对象TopologyContext初始化。

2.declareOutputFields方法
此方法用于声明当前Spout的Tuple发送流。

Stream流的定义是通过OutputFieldsDeclare.declareStream方法完成的,其中的参数包括了发送的域Fields。

3.getComponentConfiguration方法
此方法用于声明针对当前组件的特殊的Configuration配置。

4.nextTuple方法
这是Spout类中最重要的一个方法。

发射一个Tuple到Topology都是通过这个方法来实现的。

5.ack
6.fail
三.storm中bolt各个方法
1.prepare方法
此方法和Spout中的open方法类似,为Bolt提供了OutputCollector,用来从Bolt中发送Tuple。

执行在execute方法之前
2.declareOutputFields方法
用于声明当前Bolt发送的Tuple中包含的字段
3.execute方法
这是Bolt中最关键的一个方法,对于Tuple的处理都可以放到此方法中进行。

具体的发送也是通过emit方法来完成的。

此时,有两种情况,一种是emit 方法中有两个参数,另一个种是有一个参数。

(1)emit有一个参数:此唯一的参数是发送到下游Bolt的Tuple,此时,由上游发来的旧的Tuple在此隔断,新的Tuple和旧的Tuple不再属于同一棵Tuple树。

新的Tuple另起一个新的Tuple树。

(2)emit有两个参数:第一个参数是旧的Tuple的输入流,第二个参数是发往下游Bolt的新的Tuple流。

此时,新的Tuple和旧的Tuple是仍然属于同一棵Tuple树,即,如果下游的Bolt处理Tuple失败,则会向上传递到当前Bolt,当前Bolt根据旧的Tuple流继续往上游传递,申请重发失败的Tuple。

保证Tuple处理的可靠性。

4.getComponentConfiguration方法
此方法用于声明针对当前组件的特殊的Configuration配置
四.storm分组策略
(1)ShuffleGrouping:随机分组,随机分发Stream中的tuple,保证每个Bolt的Task接收Tuple 数量大致一致;
(2)FieldsGrouping:按照字段分组,保证相同字段的Tuple分配到同一个Task中;
(3)AllGrouping:广播发送,每一个Task都会受到所有的Tuple;
(4)GlobalGrouping:全局分组,所有的Tuple都发送到同一个Task中,此时一般将当前
Component的并发数目设置为1;
(5)NonGrouping:不分组,和ShuffleGrouping类似,当前Task的执行会和它的被订阅者在同一个线程中执行;
(6)DirectGrouping:直接分组,直接指定由某个Task来执行Tuple的处理,而且,此时必须有emitDirect方法来发送;
(7) localOrShuffleGrouping:和ShuffleGrouping类似,若Bolt有多个Task在同一个进程中,Tuple会随机发给这些Task。

相关文档
最新文档