立即注册 登录
About云-梭伦科技 返回首页

mzjnumber1的个人空间 https://www.aboutyun.com/?9832 [收藏] [复制] [分享] [RSS]

日志

Storm stream分组

已有 1069 次阅读2014-12-26 09:15 |个人分类:bigdata| stream

    Storm stream分组:        
        1.Shuffle Grouping: 
                   随机分组, 随机派发stream 里面的 tuple,保证每个 bolt 接收到的 tuple 数目大致相同。
                   轮询方式,平均分配tuple到下一级component上。
         2.Fields Grouping:
                   按字段分组,比如按 userid 来分组, 具有同样 userid 的 tuple 会被分到相同的 Bolts 里的一个 task,
                   而不同的userid 则会被分配到不同的 bolts 里的 task。 
                   类似SQL中的group by, 保证相同的Key的数据会发送到相同的task, 原理是对某个或几个字段做hash,
                   然后用hash结果求模得出目标taskId
         3. All Grouping:
                   广播发送,对于每一个 tuple,所有的bolts 都会收到。
                    发送给target component所有task
         4.Global Grouping:
                   全局分组, 这个 tuple 被分配 到 storm 中的一个 bolt的其中一个 task。
                 再具体一点就是分配给 id 值最低的 那个 task。 
         5. Non Grouping:
                    随机发送tuple到目标component上,但无法保证平均。 目前这种分组和 Shuffle grouping
                    是一样 的效果, 有一点不同的是 storm 会把这个 bolt 放到这个 bolt 的订阅者同一个 线程里面去执行。
         6.Direct Grouping: 
                    直接分组, 用这种分组意味着消息的发送者指定由消息接收者的哪个 task 处理
                    这个消息。 只有被声明为 Direct Stream 的消息流可以 声明这种分组方法。而且这种消息 tuple 必须使用
                    emitDirect 方法来发射。 消息处理者可以通过 TopologyContext 来 获取处理它的消息的 task 的 id
                   (OutputCollector.emit 方法也会返回 task 的 id)。 
                   发送指定目标task
         7.Local or shuffle grouping:
                    如果目标 bolt 有 一个或者多个 task 在同一个工作进程中,tuple 将会被随机发生给这些 tasks。
                   否则,和普通的 Shuffle Grouping 行为一 致。
          8.customGrouping:
                   使用用户接口CustomStreamGrouping选择出目标task

路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条