首页 > 代码库 > storm分组方式
storm分组方式
Storm有 7 种类型的stream分组:
1.Shuffle Grouping:
随机分组, 随机派发stream 里面的 tuple,保证每个 bolt 接收到的 tuple 数目大致相同。<br>
2.Fields Grouping:
按字段分组,比如按 userid 来分组, 具有同样 userid 的 tuple 会被分到相同的 Bolts 里的一个 task,
而不同的userid 则会被分配到不同的 bolts 里的 task。
3. All Grouping:
广播发送,对于每一个 tuple,所有的bolts 都会收到。<br>
4.Global Grouping:
全局分组, 这个 tuple 被分配 到 storm 中的一个 bolt的其中一个 task。再具体一点就是分配给 id 值最低的 那个 task。<br>
5. Non Grouping:
不分组,这个 分组的意思是说 stream 不关心到底谁会收到它的 tuple。 目前这种分组和 Shuffle grouping
是一样 的效果, 有一点不同的是 storm 会把这个 bolt 放到这个 bolt 的订阅者同一个 线程里面去执行。
6.Direct Grouping:
直接分组, 这是一种比较特别 的分组方法,用这种分组意味着消息的发送者指定由消息接收者的哪个 task 处理
这个消息。 只有被声明为 Direct Stream 的消息流可以 声明这种分组方法。而且这种消息 tuple 必须使用
emitDirect 方法来发射。 消息处理者可以通过 TopologyContext 来 获取处理它的消息的 task 的 id
(OutputCollector.emit 方法也会返回 task 的 id)。
7.Local or shuffle grouping:
如果目标 bolt 有 一个或者多个 task 在同一个工作进程中,tuple 将会被随机发生给这些 tasks。否则,和普通的 Shuffle Grouping 行为一 致。
storm分组方式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。