码迷,mamicode.com
首页 > 其他好文 > 详细

storm的八种Grouping策略

时间:2015-02-24 23:20:45      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:

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

      首先,需要一个集群(希望尽量模仿真实环境,故就不用本地模式了)。详细的安装方法大家可以查看本人的另外一篇博文:storm集群和zookeeper集群的部署过程

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

      好了,来看一个简单的Topology。将使用这个Topology来实现那几种Grouping策略。

      技术分享

      上图中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)

      OK,下面逐个来试试!

      首先是使用shuffleGrouping策略。

      技术分享

      启动后所得的结果。

      技术分享

     可以看到如storm这个单词被随机分配到了两个counter里面,分别是h2和h3两个节点里面。可再做一次提交,又会看到不一样的结果。将与下面的fieldGrouping形成对比。

     技术分享

     技术分享

     然后换成fieldsGrouping。

     技术分享

    启动后的结果如图。图中wordcount2和wordcount3就是我两次提交的topology的名字。

     技术分享

     技术分享

    下面是两次提交的结果。可以看出,使用fieldsGrouping策略,被分配到每个wordcounterbolt的单词没有变化。

     技术分享

     技术分享

    下面是第二次提交的结果。

     技术分享

     技术分享

     再换成noneGrouping策略。

     技术分享

    提交集群运行。

     技术分享

    运行结果如图。noneGrouping和shuffleGrouping是基本一样的。都是随机的。

    技术分享

    技术分享

    替换成allGrouping策略。

   技术分享

   提交集群运行。

   技术分享

   运行结果如图。可以看到。两个bolt所接收到的单词是一样的,都是全部的单词。

   技术分享

   技术分享

   最后,替换成globalGrouping策略。

   技术分享

   提交集群运行。

   技术分享

   从上图可以看到,主要分配到了h3这个节点。从下面的结果得以验证。

   技术分享

   技术分享

   好了,就先做到这里吧!剩下的grouping策略需要在修改一个代码,就下次再做了。本来不想上这么多图的,不过,不是说有图有真相嘛!哈哈~

storm的八种Grouping策略

标签:

原文地址:http://www.cnblogs.com/UUhome/p/4298755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!