Storm Grouping
-
shuffleGrouping
将流分组定义为混排。这种混排分组意味着来自Spout的输入将混排,或随机分发给此Bolt中的任务。shuffle grouping对各个task的tuple分配的比较均匀。
-
fieldsGrouping
这种grouping机制保证相同field值的tuple会去同一个task,这对于WordCount来说非常关键,如果同一个单词不去同一个task,那么统计出来的单词次数就不对了。
-
All grouping
广播发送, 对于每一个tuple将会复制到每一个bolt中处理。
-
Global grouping
Stream中的所有的tuple都会发送给同一个bolt任务处理,所有的tuple将会发送给拥有最小task_id的bolt任务处理。
-
None grouping
不关注并行处理负载均衡策略时使用该方式,目前等同于shuffle grouping,另外storm将会把bolt任务和他的上游提供数据的任务安排在同一个线程下。
-
Direct grouping
由tuple的发射单元直接决定tuple将发射给那个bolt,一般情况下是由接收tuple的bolt决定接收哪个bolt发射的Tuple。这是一种比较特别的分组方法,用这种分组意味着消息的发送者指定由消息接收者的哪个task处理这个消息。 只有被声明为Direct Stream的消息流可以声明这种分组方法。而且这种消息tuple必须使用emitDirect方法来发射。消息处理者可以通过TopologyContext来获取处理它的消息的taskid (OutputCollector.emit方法也会返回taskid)
相关推荐
本示例将深入探讨“storm多重grouping”的概念,以及如何在Spout和Bolt之间实现这一功能。首先,我们需要理解Storm的基本架构,它由Spouts(数据源)和Bolts(数据处理组件)组成,而Grouping则是决定数据如何在这些...
数据流分组方式包括随机分组(Shuffle Grouping)、字段分组(Fields Grouping)、全部分组(All Grouping)、直接分组(Direct Grouping)、无分组(None Grouping)和自定义分组等。 Storm支持使用不同编程语言...
2、注重实践,对较抽象难懂的技术点如Grouping策略、并发度及线程安全、批处理事务、DRPC、Storm Trident均结合企业场景开发案例进行讲解,简单易懂; 3、分享积累的经验和技巧,从架构的角度剖析场景和设计实现...
- **Stream Groupings**:数据流在 Bolt 之间的路由策略,如 Shuffle Grouping、Fields Grouping 等。 - **Nimbus**:主控服务器,负责任务调度和资源分配。 - **Supervisor**:在工作节点上运行,管理 worker 进程...
Storm 的流分组策略包括洗牌分组、字段分组、Partial key grouping、ALL grouping、Global grouping、None grouping、Direct grouping 等。流分组定义了一个流在一个消费它的 bolt 内多个 task 之间如何分组。 ...
有多种Grouping策略,例如:Shuffle Grouping(随机分发)、Fields Grouping(按字段分组)和All Grouping(所有副本都发送到每个Bolt)。 5. **Zookeeper**:Apache Storm依赖Zookeeper来协调集群中的各个节点,...
02_流式计算基础_第1天 (Storm集群部署、单词计数、Stream Grouping).docx
这些策略在`backtype.storm.task`包下的`Grouping`类中定义。 在源码中,你会看到Storm采用了Thrift作为跨语言通信的中间件,这使得Storm可以支持多种编程语言。`lib/storm.thrift`包含了Thrift定义的Storm服务接口...
Storm是一个开源的分布式实时计算系统,它是由Nathan Marz等人在Twitter工作期间开发的。Storm的主要优势在于简单、可靠、可以线性扩展到大量的机器上。它的设计目标是能简单、可靠地处理大量数据,并且可以无缝地...
- **Grouping策略**:详解如何根据不同场景选择合适的Grouping策略来优化数据流的处理效率。 - **并发度与线程安全**:深入分析并发度设置的重要性以及如何保证线程安全,避免数据处理过程中的错误和异常。 - **...
3. **Stream Grouping**:数据流分组策略,包括字段分组、全局分组、shuffle分组等,决定Tuples如何在Bolt实例间分布。 **五、Storm原理** 1. **容错机制**:基于Zookeeper实现,当Nimbus检测到某个worker故障时,...
7. **Grouping(分组)**:Storm 提供多种分组策略,如 shuffle grouping(随机分组)、fields grouping(字段分组)、global grouping(全局分组)和 all grouping(全分组),用于控制流如何在 bolts 之间进行分布...
### Storm的文档详解 #### 一、Storm基础概念 **1.1 什么是Storm?** Apache Storm 是一款免费且开源的分布式实时计算系统。它专为处理无界数据流而设计,能够实现实时数据处理任务,具备低延迟、高可用、分布式...
- **Stream Grouping**:定义了Bolt如何接收来自Spout或其他Bolt的数据,例如全局分组、字段分组、shuffle分组等。 - **Topology**:由Spout和Bolt组成的计算逻辑图,描述了数据流的处理流程。 在压缩包"storm-...
Storm为不同的应用场景提供了多种Stream Grouping策略,比如Shuffle Grouping确保每个Tuple被随机分发到不同的任务,而Fields Grouping则根据Tuple中的字段值来进行分组。All Grouping则将每个Tuple复制发送到下游...
11. **Stream Grouping**:决定了如何将数据流中的 Tuple 分发给 Bolt 中的不同 Task。Storm 支持以下几种分组策略: - **Shuffle**:随机分发 Tuple,确保每个 Bolt 的 Task 收到的数据大致均衡。 - **Fields**...
builder.setBolt("bolt", new TestBolt(), parallelismHint).shuffleGrouping("spout"); } ``` **三、Spout实现** Spout是Storm中的数据源,负责产生数据流。在`TestSpout`类中,你需要重写`nextTuple()`方法来...
2.4 **Stream Groupings**:流分组是Bolt如何从上游Spout接收数据的方式,包括shuffle grouping(随机分发)、fields grouping(按字段分发)等。 **三、流数据处理应用场景** 3.1 **实时分析**:例如社交媒体分析...
- **Stream Grouping(流分组)**:这是决定Bolt如何接收来自Spout或上游Bolt的数据的方式,例如,字段分组、全局分组、shuffle分组等。 **3. Storm运行流程** 1. **定义拓扑**:编写Spout和Bolt,定义它们之间的...