stream grouping

stream grouping就是用来定义一个stream应该如果分配给Bolts上面的多个Tasks

 

storm里面有6种类型的stream grouping:

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是一样的效果,不平均分配。

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

时间: 2024-11-08 22:48:36

stream grouping的相关文章

关于Storm Stream grouping

在Storm中, 开发者可以为上游spout/bolt发射出的tuples指定下游bolt的哪个/哪些task(s)来处理该tuples.这种指定在storm中叫做对stream的分组,即stream grouping,分组方式主要有以下7种 Shuffle Grouping 或 None Grouping Fields Grouping All Grouping Global Grouping LocalOrShuffle Grouping Direct Grouping 1. Shuffle

Stream grouping 并发策略详解

Spout数据源:Message queue   消息队列  必须使用 MQ.Db.文件 直接流数据源:MQ 从db只能读配置文件 Log文件增量数据:1.读出内容写入MQ,2.Storm处理 Spout读文件:学习用,其他无用 读文件:1.分布式应用无法读:2.spout开并发会重复读 Stream grouping 策略 只适用于多并发 stream grouping就是用来定义一个stream应该如果分配给Bolts上面的多个 Executors(多线程,并发度) 注:不是一个spout或

Stream Grouping类型

Stream Grouping定义了一个流在Bolt任务间该如何被切分.这里有Storm提供的6个Stream Grouping类型: 1. 随机分组(Shuffle grouping):随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple. 2. 字段分组(Fields grouping):根据指定字段分割数据流,并分组.例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务. 3. 全部分组(A

Storm 第三章 Storm编程案例及Stream Grouping详解

1 功能说明 设计一个topology,来实现对文档里面的单词出现的频率进行统计.整个topology分为三个部分: SentenceSpout:数据源,在已知的英文句子中,随机发送一条句子出去. SplitBolt:负责将单行文本记录(句子)切分成单词 CountBolt:负责对单词的频率进行累加 2 代码实现 1 package com.ntjr.bigdata; 2 3 import org.apache.storm.Config; 4 import org.apache.storm.Lo

Stream消息流 和 Stream Grouping 消息流组

Storm杂记 — Field Grouping和Shuffle Grouping的区别

转载请注明出处:http://blog.csdn.net/luonanqin 最近研究Storm的Stream Grouping的时候,对Field Grouping和Shuffle Grouping理解不是很透彻.去看WordCountTopology也不怎么理解,后来脑洞一开,加了一行代码再次运行,彻底顿悟.只能说自己对Storm的基本概念还是没吃透啊.(WordCountTopology这个例子请自行参考Storm-Starter) public void execute(Tuple tu

Storm的并行度、Grouping策略以及消息可靠处理机制简介

概念: Workers (JVMs): 在一个节点上可以运行一个或多个独立的JVM 进程.一个Topology可以包含一个或多个worker(并行的跑在不同的machine上), 所以worker process就是执行一个topology的子集, 并且worker只能对应于一个topology Executors (threads): 在一个worker JVM进程中运行着多个Java线程.一个executor线程可以执行一个或多个tasks.但一般默认每个executor只执行一个task.

Storm基本概念以及Topology的并发度

Spouts,流的源头 Spout是Storm里面特有的名词,Stream的源头,通常是从外部数据源读取tuples,并emit到topology Spout可以同时emit多个tupic stream,通过OutputFieldsDeclarer中的declareStream,method来定义 Spout需要实现RichSpout端口,最重要的方法是nextTuple,storm会不断调用接口从spout中取数据,同时需要注意的是Spout分为reliable or unreliable两种

Apache-Storm 集群

[[[ storm  ]]] 一.Apache Storm简介   Storm是一个分布式的,可靠的,容错的数据流处理系统.Storm集群的输入流由一个被称作spout的组件管理,spout把数据传递给bolt,bolt要么把数据保存到某种存储器,要么把数据传递给其它的bolt.一个Storm集群就是在一连串的bolt之间转换spout传过来的数据.   1.Storm组件 在Storm集群中.有两类节点:主节点master node和工作节点worker nodes.主节点运行Nimbus守护