博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
storm平台之几个重要概念
阅读量:4111 次
发布时间:2019-05-25

本文共 1124 字,大约阅读时间需要 3 分钟。

storm平台几个重要概念概述如下:

1 Topologies

拓扑,计算单元,类似hadoop中的job,整个执行环形单位,从Spouts中获取数据,然后依次在Bolts中执行,不会终止,会一直执行直到显示结束。

 

2 Spouts

数据源泉,获取数据,是整个拓扑数据的生产者。

主要涉及的方法如下:

1.nextTuple:发射新tuple到topology/无tuple时返回;

2.ack:storm检测到一个tuple被整个topology处理成功时调用;

3.fail:storm检测到一个tuple被整个topology处理失败时调用;

 

3 Bolts

具体任务的执行者,具体消息处理逻辑实现,处理过程概述如下:

1.Bolts处理一个输入的tuple;

2.发射0/多个tuple;

3.调用ack通知storm:已经处理过本tuple;

 

4 Streams消息流

具体的数据流以tuple来体现他的存在,可以指定一个唯一的id。

 

5消息分发策略

Stream groupings,为定义一个流的分发策略,也就是说Spouts产生的数据怎么向Bolts流,目前支持六种分发策略:

1. Shuffle Grouping: 随机分组, 随机派发stream里面的tuple, 保证每个bolt接收到的tuple数目相同.

2. Fields Grouping:按字段分组, 比如按userid来分组, 具有同样userid的tuple会被分到相同的Bolts, 而不同的userid则会被分配到不同的Bolts.

3. All Grouping: 广播发送, 对于每一个tuple, 所有的Bolts都会收到.

4. Global Grouping: 全局分组,这个tuple被分配到storm中的一个bolt的其中一个task.再具体一点就是分配给id值最低的那个task.

5. Non Grouping: 不分组,意思是说stream不关心到底谁会收到它的tuple.目前他和Shuffle grouping是一样的效果,有点不同的是storm会把这个bolt放到这个bolt的订阅者同一个线程去执行.

6. Direct Grouping: 直接分组,这是一种比较特别的分组方法,用这种分组意味着消息的发送者由消息接收者的哪个task处理这个消息.只有被声明为Direct Stream的消息流可以声明这种分组方法.而且这种消息tuple必须使用emitDirect方法来发射.消息处理者可以通过TopologyContext来或者处理它的消息的taskid (OutputCollector.emit方法也会返回taskid)

 

转载地址:http://biqsi.baihongyu.com/

你可能感兴趣的文章
LA 2797 Monster Trap 怪物逃脱 平面区域
查看>>
UVA 10047 骑单车
查看>>
UVA 11275 判断空间三角形是否相交
查看>>
Find a way bfs搜索 容易出错
查看>>
C - Charm Bracelet dp
查看>>
CF 551B 暴力+字符串
查看>>
CF 551c 二分搜索+思维题
查看>>
UVA 10054
查看>>
cf 550A 字符串统计
查看>>
CF 字符串+数论
查看>>
POJ 1274 The Perfect Stall 二分匹配模板
查看>>
CF Mike and Fax 字符串组成
查看>>
POJ 3250 单调栈模板
查看>>
CF #338B Longtail Hedgehog 画刺猬
查看>>
Good Bye 2015 B. 位运算
查看>>
Cf #179 (Div. 1) B. Greg and Graph 活用三重floyd
查看>>
CF #165 DIV2 E 最大流的流向
查看>>
Manthan 2011 A. Partial Teacher 拓扑排序or直接数组处理
查看>>
AVL树与红黑树比较
查看>>
排序算法比较与分析
查看>>