storm的八种Grouping策略

2018-03-26  本文已影响38人  6cc89d7ec09f

转载:(http://www.cnblogs.com/UUhome/p/4298755.html)

在这里,将会提到storm的七种grouping策略,并且编码逐一实现。

首先,需要一个集群(希望尽量模仿真实环境,故就不用本地模式了)。

现在有三个节点。一个作为nimbus,两个作为supervisor。到这里先介绍一下storm逻辑上有两个component,一个是Spout,另一个是Bolt。stream由Spout发出,在不同的Bolt之间进行处理,在其中传递的是storm的基本处理单位:Tuple。由Spout发出一个一个Tuple,然后Bolt接收Tuple进行各种各样的处理。这一整个过程构成一个DAG。在storm里面叫做Topology。当使用远程模式向集群提交一个Topology之后,如果不kill掉的话,将会一直运行到。。。我也不知道尽头。。貌似没有尽头。
好了,来看一个简单的Topology。将使用这个Topology来实现那几种Grouping策略。


image

上图中spout的处理逻辑是将一句话发出给下一个Bolt,然后下一个Bolt做句子的单词分割,下一个做计数,最后的Bolt做汇总显示。这里可以有多个Bolt或者Spout进行并行处理。这是关于并行度的设置。

所谓的grouping策略就是在Spout与Bolt、Bolt与Bolt之间传递Tuple的方式。总共有七种方式:

  1)shuffleGrouping(随机分组)

  2)fieldsGrouping(按照字段分组,在这里即是同一个单词只能发送给一个Bolt)

  3)allGrouping(广播发送,即每一个Tuple,每一个Bolt都会收到)

  4)globalGrouping(全局分组,将Tuple分配到task id值最低的task里面)

  5)noneGrouping(随机分派)

  6)directGrouping(直接分组,指定Tuple与Bolt的对应发送关系)

  7)Local or shuffle Grouping

  8)customGrouping (自定义的Grouping)
上一篇 下一篇

猜你喜欢

热点阅读