`

storm分组策略介绍

 
阅读更多
一、storm数据来源
Spout的数据源:

MQ:直接流数据源

Db:只能读配置文件

文件:只能学习用,其他无用。
问题:1、分布式应用无法读;2、spout开并发会重复读
Log文件增量数据:1、读出内容写入MQ,2、Storm处理

二、分组策略

stream grouping就是用来定义一个stream应该如果分配给Bolts上面的多个
Executors(多线程,并发度)
注:不是一个spout或bolt emit到多个bolt(广播方式)。

storm里面有6种类型的stream grouping。
单线程下均等同于All Grouping

1.Shuffle Grouping:轮询,每个线程平均分配。随机派发stream里面的tuple,保证每个bolt接收到的tuple数目相同。

2. Non Grouping:无分组, 这种分组和Shuffle grouping是一样的效果,多线程下不平均分配。

3. Fields Grouping:按Field分组,比如按word来分组, 具有同样word的tuple会被分到相同的Bolts, 而不同的word则会被分配到不同的Bolts。
作用:1、过滤,从源端(Spout或上一级Bolt)多输出Fields中选择某些Field
           2、相同的tuple会分发给同一个线程(Executer或task)处理
典型场景: 去重操作、Join

4. All Grouping: 广播发送, 对于每一个tuple, 所有的Bolts都会收到。每个线程获得的数据一致。

5. Global Grouping: 全局分组, 这个tuple被分配到storm中的一个bolt的其中一个task。再具体一点就是分配给id值最低的那个task。适合场景:想象不到。

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

分享到:
评论

相关推荐

    流式计算Storm

    《深入理解流式计算框架Storm》 Storm,作为Twitter开源的一款实时数据处理框架,源自BackType,后来在Twitter的推动下成为了实时数据分析的核心工具。它弥补了Hadoop在实时处理领域的不足,为需要快速响应和处理...

    storm 学习资源总结

    Storm 的流分组策略包括洗牌分组、字段分组、Partial key grouping、ALL grouping、Global grouping、None grouping、Direct grouping 等。流分组定义了一个流在一个消费它的 bolt 内多个 task 之间如何分组。 ...

    03_storm.zip

    【Storm篇】--Storm中的同步服务DRPC 【Storm篇】--Storm从初始到分布式搭建 【Storm篇】--Storm 容错机制 【Storm篇】--Storm并发机制 【Storm篇】--Storm分组策略 【Storm篇】--Storm基础概念

    Storm笔记-PPT

    3. **Stream Grouping**:数据流分组策略,包括字段分组、全局分组、shuffle分组等,决定Tuples如何在Bolt实例间分布。 **五、Storm原理** 1. **容错机制**:基于Zookeeper实现,当Nimbus检测到某个worker故障时,...

    storm流数据处理开发应用实战(linux实验环境,storm搭建完毕后的开发)

    Storm分组机制 Storm提供了多种分组策略,如全组播(AllGrouping)、全局分组(GlobleGrouping)等,这些策略决定了数据如何在Bolt之间进行分配,从而影响系统的处理效率和一致性。 ### 12. Storm并行结构 并行度...

    storm实时数据处理

    书中可能涉及的高阶应用开发包括:窗口化操作(时间窗口、滑动窗口、会话窗口),用于处理数据流的分组策略,如全局分组、字段分组、shuffle分组等,以及复杂的流处理逻辑如状态管理和分布式协调。 六、与其他...

    storm练习代码

    - Storm提供了多种分组策略,如 shuffle grouping(随机分组)、fields grouping(按字段分组)等,决定了Bolt如何接收来自上游Spout或Bolt的数据。 6. **容错机制** - Storm通过检查点和状态持久化确保数据的...

    Storm源码走读笔记

    TridentTopology的创建涉及到newStream、each、partitionPersist、build等步骤,并通过grouping来指定Tuple的分组策略。 文档最后提及了Storm的可靠性机制,这是指Storm如何保证每个Tuple在Topology中至少被处理一...

    storm的测试源码

    - **Stream Grouping**:数据流在Bolt之间传输时,可以通过各种分组策略(如字段分组、全局分组、shuffle分组等)来控制数据的流向。 3. **本地与集群模式**: - **Local模式**:在本地模式下,你可以快速地运行...

    apache-storm-0.9.5源码

    4. Stream Groupings:流分组是决定数据如何在Bolt之间传递的策略,包括Shuffle Grouping(随机分组)、Fields Grouping(字段分组)等。这些策略在`backtype.storm.task`包下的`Grouping`类中定义。 在源码中,你...

    Apache Storm-0.8.1 api文档 (html)

    7. **Grouping(分组)**:Storm 提供多种分组策略,如 shuffle grouping(随机分组)、fields grouping(字段分组)、global grouping(全局分组)和 all grouping(全分组),用于控制流如何在 bolts 之间进行分布...

    storm原理分析

    Storm 支持以下几种分组策略: - **Shuffle**:随机分发 Tuple,确保每个 Bolt 的 Task 收到的数据大致均衡。 - **Fields**:根据 Tuple 中的一个或多个字段进行分组,相同字段的 Tuple 会被发送到相同的 Task。 ...

    从零开始学Storm+第2版(2016).pdf

    4. **Stream Groupings**:数据在Bolt之间的传递方式称为分组策略,常见的有字段分组、全局分组、shuffle分组和all分组,每种分组策略决定了数据在Bolt间的分布方式。 5. **容错机制**:Storm 提供了强大的容错机制...

    Storm 简单示例

    有多种分组策略,如shuffle grouping(随机分组)、fields grouping(字段分组)和all grouping(全复制分组)等,根据不同的业务需求选择合适的分组策略。 5. **本地模式(Local Mode)**:在学习和开发阶段,可以...

    Getting Started with Storm

    Storm提供了多种流分组策略,包括随机分组、字段分组、所有分组、全局分组、无分组等,每种策略都有其特定的使用场景和目的。 总的来说,这本书为读者提供了一个全面的Storm入门指南,从基础知识到实际操作,覆盖了...

    Storm的WordCount实例

    在实际应用中,我们可能会考虑优化性能,比如使用更高效的分词算法,或者采用并行处理策略,如使用多个拆分和计数Bolt实例。此外,还可以根据需求扩展这个WordCount实例,例如,添加过滤特定词汇的功能,或者支持多...

    Getting.Started.with.Storm(2012.8)].Jonathan.Leibiusky.文字版.pdf

    节点之间的分组策略有Shuffle Grouping、Fields Grouping和All Grouping等。这些分组策略影响着数据流如何在Bolts之间传递和分布。 Apache Storm的拓扑是一种有向无环图(DAG),用于定义Spout和Bolt之间的数据流...

Global site tag (gtag.js) - Google Analytics