storm之9:分组

Storm通过分组来指定数据的流向,主要指定了每个bolt消费哪个流,以及如何消费。

storm内置了7个分组方式,并提供了CustomStreamGrouping来创建自定义的分组方式。

1、随机分组 shuffleGrouping

这种方式会随机分发tuple给bolt的各个task,每个task接到到相同数量的tuple。

2、字段分组 fieldGrouping

按照指定字段进行分组,该字段具有相同组的会被发送到同一个task,具体不同值的可能会被发送到不同的task。

3、全复制分组 allGrouping(或者叫广播分组)

每一个tuple都会发送给所有的task,必须小心使用。

4、全局分组 globlaGrouping

将所有tuple均发送到唯一的task,会选取task ID最小的task。这种分组下,设置task的并行度是没有意义的。另外,这种方式很有可能引起瓶颈。

5、不分组 noneGrouping

留作以后使用,目前也随机分组相同。

6、指向型分组 directGrouping(或者叫直接分组)

数据源会调用emitDirect()方法来判断一个tuple应该由哪个storm组件来接收,只能在声明了是指向型的数据流上使用。

7、本地或随机分组 localOrShuffleGrouping

如果接收bolt在同一个进程中存在一个或者多个task,tuple会优先发送给这个task。否则和随机分组一样。相对于随机分组,此方式可以减少网络传输,从而提高性能。

时间: 2024-11-05 20:30:12

storm之9:分组的相关文章

storm的流分组

用的是ShuffleGrouping分组方式,并行度设置为3 这是跑下来的结果 参考代码StormTopologyShufferGrouping.java package yehua.storm; import java.util.Map; import org.apache.storm.Config;import org.apache.storm.LocalCluster;import org.apache.storm.StormSubmitter;import org.apache.stor

Storm Topology及分组整理

Storm的通信机制,需要满足如下一些条件以满足Storm的语义. 1.建立数据传输的缓冲区.在通信连接没有建立之前把发送的数据缓存起来.数据发送方可以在连接建立之前发送消息,而不需要等连接建立起来,可是的接收方是独立运行的. 2.在消息传输层保证消息最多只能发送一次,Storm系统有ACK机制,是的没有被发送成功的消息会被重发,若消息层面也重发,会导致消息发送多次. 这种消息机制由两个接口来定义,backtype.storm.messaging.IContext和backtype.storm.

Storm笔记整理(四):Storm核心概念与验证——并行度与流式分组

[TOC] Storm核心概念之并行度 Work 1个worker进程执行的是1个topology的子集(注:不会出现1个worker为多个topology服务).1个worker进程会启动1个或多个executor线程来执行1个topology的(spout或bolt).因此,1个运行中的topology就是由集群中多台(可能是一台)物理机上的一个或者多个worker进程组成的. Executor executor是worker进程启动的一个单独线程. 每个executor只会运行1个topo

Storm---DirectGroup(直接分组)

以单词分割计数为例实现Storm的DirectGroup分组: 1.Spout实现 Spout是Storm数据源头,使用DirectGroup方式将Spout数据发送指定的Bolt,需注意: 1).Spout消费的Bolt的Task(Task应为Storm的Executor的编号),在如下代码中Spout.open()初始化中拿到消费Task 2).需使用SpoutOutputCollector.emitDirect()方法 3).将Spout声明为直接流,即在Spout.declareOutp

[转载] 使用 Twitter Storm 处理实时的大数据

转载自http://www.ibm.com/developerworks/cn/opensource/os-twitterstorm/ 流式处理大数据简介 Storm 是一个开源的.大数据处理系统,与其他系统不同,它旨在用于分布式实时处理且与语言无关.了解 Twitter Storm.它的架构,以及批处理和流式处理解决方案的发展形势. Hadoop(大数据分析领域无可争辩的王者)专注于批处理.这种模型对许多情形(比如为网页建立索引)已经足够,但还存在其他一些使用模型,它们需要来自高度动态的来源的

第1节 storm编程:8、storm的分发策略

8. Storm的分发策略 Storm当中的分组策略,一共有八种: 所谓的grouping策略就是在Spout与Bolt.Bolt与Bolt之间传递Tuple的方式.总共有八种方式: 1)shuffleGrouping(随机分组)随机分组:将tuple随机分配到bolt中,能够保证各task中处理的数据均衡: 2)fieldsGrouping(按照字段分组,在这里即是同一个单词只能发送给一个Bolt) 按字段分组: 根据设定的字段相同值得tuple被分配到同一个bolt进行处理: 举例:buil

Storm集群上的开发 ,Topology任务的编写 之 WordCount Spout和Blot的分组策略(一张图说明问题)(五)

Storm的数据从Spout采集后,交给Blot组件处理,数据在Blot之间流动时,会涉及到数据流动的方向.这就是Storm的分组策略. 从WordCount的单词拆分到单词计数,会使用按字段的分组策略来拆分单词,并分配到不同的Count Blot中计算.

storm流分组

流分组 在设计一个topology的时候,你需要做的最重要的事情是定义数据在组件之间怎样交换(流怎样被bolts消费).流分组指定了每个bolt消费哪些流和这些流被怎样消费. 一个结点可以发射不止一条数据流.流分组允许我们选择接收哪些流. 正如我们在第二章看到的,当topology被定义的时候流分组就被设置好了: ... builder.setBolt("word-normalizer", new WordNormalizer()) .shuffleGrouping("wor

storm 的分组策略深入理解(-)

目录 storm的分组策略 根据实例来分析分组策略 common配置: Shuffle grouping shuffle grouping的实例代码 ShuffleGrouping 样例分析 Fields grouping Fields grouping 的实例 FieldGrouping 样例分析 storm的分组策略 洗牌分组(Shuffle grouping): 随机分配元组到Bolt的某个任务上,这样保证同一个Bolt的每个任务都能够得到相同数量的元组. 字段分组(Fields grou