storm分组策略介绍

[size=medium][b]一、storm数据来源[/b][/size]
Spout的数据源:

MQ:直接流数据源

Db:只能读配置文件

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

[size=medium][b]二、分组策略[/b][/size]

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是一个流式计算框架,数据源源不断的产生,源源不断的收集,源源不断的计算。(数据实时产生、实时传输、实时计算、实时展示) Storm只负责数据的计算,不负责数据的存储。 2013年前后,阿里巴巴基于storm框架,使用java语言开发了类似的流式计算框架佳作,Jstorm。2016年年底阿里巴巴将源码贡献给了Apache storm,两个项目开始合并,新的项目名字叫做stor... 阅读详情

相关推荐

小爱音箱Play增强版刷机接入大模型:自定义唤醒词与远程控制全攻略

智能音箱作为家庭语音入口,受限于厂商预设技能,难以满足个性化需求。通过串口刷机与Linux系统分区改造,可以完全掌控设备底层,将豆包、通义千问等大模型API接入原有音频链路,实现真正智能的语音问答。自定义唤醒词打破了“小爱同学”的唯一唤醒方式,结合ESP32-S3外挂模块,还能优化远场拾音。更深入的应用在于将音箱打造为家庭中控,通过大模型工具调用解析自然语言指令,实现远程控制电脑、智能灯等设备。本文从设备选型、拆机串口、系统备份到语音链路搭建,完整梳理了小爱音箱Play增强版的改造路径,适合具备动手能力的开

weixin_30036289的博客 718

Storm之分组策略

Storm由数源泉spout到bolt时,可以选择分组策略,实现对spout发出的数据的分发。对多个并行度的时候有用。 一、Storm的数据分发策略 1. Shuffle Grouping随机分组,随机派发stream里面的tuple,保证每个bolt task接收到的tuple数目大致相同。轮询,平均分配 2. Fields Grouping(相同fields去分发到同一个Bolt)按...

lixinkuan的博客 1057

PyQtWebEngine安装避坑指南:快速解决ModuleNotFoundError

本文详细解析了PyQt5开发中常见的ModuleNotFoundError: No module named 'PyQt5.QtWebEngineWidgets'错误。核心原因是PyQt5 5.11版本后,网页引擎组件被独立为PyQtWebEngine包。文章对比了退回旧版本、独立安装及使用Conda等多种解决方案,并提供了针对Windows、macOS和Linux不同平台的实战安装指南与验证方法,帮助开发者快速解决依赖问题。

weixin_29056101的博客 427

storm的分组策略

storm有7种流分组策略: 1:shuffle Grouping 随机分组;将tuple随机分配到bolt中,能够保证各bolt中处理的数据均衡; 2:Fields Grouping 按字段分组; 根据设定的字段相同值得tuple被分配到同一个bolt进行处理; 举例:builder.setBolt("mybolt", new MyStoreBolt(),5).fieldsGroupi

天空色彩图 2359

DDR March系列算法整理

一

不吃鱼的猫的博客 1万+

从零开始:HLW8110电能计量IC的硬件设计与软件调试全攻略

本文详细介绍了HLW8110电能计量IC的硬件设计与软件调试全流程,涵盖核心特性、抗干扰设计、UART通信协议及校准方法。通过实战案例和优化技巧,帮助工程师快速掌握高精度交流测量技术,适用于智能插座、充电桩等应用场景。

p5l2m9n4o6q的博客 576

Storm分组策略

1. allGrouping全分组,相当于广播 builder.setSpout("spout", new MySpout(), 2); builder.setBolt("bolt", new MyBolt(), 3).allGrouping("spout").setNumTasks(2); bolt的2个task,每个executor执行1个,所以共开启2个bol...

learningcoder的专栏 281

ardupilot 获取避障传感器数据

本节主要记录自己学ardupilot的避障代码过程,首先看下怎么注册避障传感器,然后怎么获取避障数据。

陌城烟雨 5524

设计模式之分组策略

策略(Strategy):一个接口,接口内部定义若干抽象方法;具体策略(ConcreteStrategy):继承接口的某个类,类重写并具体实现接口定义的方法;上下文(Context):包含有策略声明的变量。提供一个方法,该方法 委托 策略变量 调用 具体策略所重写的策略借口中的方法。简单来说,即在上下文中通常做这些事:a.声明接口变量(声明策略变量) b.定义方法1: 用声明的接口变量,接收方法形...

LANCE的博客 1512

仿真学习系列(三十八):Sigrity仿真之单端S参数提取

S 参数(Scattering Parameters)是高速信号分析中最基础也最常用的指标,能够全面表征走线、过孔、连接器等互连结构的高频行为。在 Sigrity PowerSI 中,Model Extraction 是最常用的 S 参数提取方式,适用于高速差分线、单端线、过孔、参考平面等各种拓扑结构。 本节将通过示例讲解如何在 PowerSI 中完成一次完整的 S 参数提取流程,包括:对象选择、端口设置、频率范围配置以及结果查看。掌握此方法后,即可对任意高速网络执行阻抗、插损、回损、串扰分析,为进一步的

案例文章,高速信号 838

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

storm的流分组策略

storm中有多个bolt和多个spout,他们之间会有多种连接方式,他们之间的tulpe也是多种传递方式,正是有了这些灵活的分组策略,才使得storm可以分层处理,每层bolt都只做自己的事情 storm里面有7种 stream grouping 1.shuffle grouping 2.fields grouping 3.all grouping 4.global group...

zhangsir的博客 9083

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

简单聊聊Storm的流分组策略

简单聊聊Storm的流分组策略 首先我要强调的是,Storm的分组策略对结果有着直接的影响,不同的分组的结果一定是不一样的。其次,不同的分组策略对资源的利用也是有着非常大的不同,本文主要讲一讲localOrShuffle这个分组对资源利用的重大改善。最后,不同的分组对项目的逻辑也起着至关重要的决定,比如在写数据的时候不同的分组策略会导致死锁。 简单理解数据流分组 拓扑定义的一部分就是为每...

alice368517的博客 364

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Storm流分组介绍

Storm流分组介绍 流分组是拓扑定义的一部分,每个Bolt指定应该接收哪个流作为输入。流分组定义了流/元组如何在Bolt的任务之间进行分发。在设计拓扑的时候需要定义数据如何在组件之间进行交换(流如何被Bolt消耗处理)。 一个流分组指定每个Bolt消耗哪个流。一个节点可以发出多个数据流,流分组允许我们有选择的接收流进行消耗处理。 ...

weixin_30470643的博客 156

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

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

weixin_30385925的博客 162

storm 介绍+八种grouping方法

Storm主要的应用场景就是流式数据处理,例如实时推荐系统,实时监控系统等。 storm中的相关概念 在storm中,分布式的计算结构指的是一个topology(拓扑),一个topology由流式数据,spouts(流生产者),以及bolts(具体操作者)组成。Storm的topologies和其他的批处理任务系统很类似,例如Hadoop,这类批处理任务都定义了清晰的开始和结束点,然而s...

weixin_30883777的博客 252

【Storm篇】--Storm分组策略

========================================================= 声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!! 请关注本人博客园地址:http://www.cnblogs.com/LHWorldBlog/ 个人网站地址:http://www.lhworldblog.com/ ================

L先生AI课堂 725

Storm分组

1、定义:Stream Grouping:为每一个bolt指定应该接收哪个流作为输入,流分组定义了如何在bolt的任务直接进行分发。1.1 Shuffle Grouping随机分组:保证每个bolt接受到的tuple数目相同1.2 Fields Grouping按字段分组,比如按照userid来分组,具有同样的userid的tuple会被分到同样的Bolts,而不同的userid则会被分配到不同的...

u010634288的博客 496

Storm基础(四)--Storm数据流分组

Stream消息流 消息流是Storm中最关键的抽象,是一个没有边界的Tuple序列,这些Tuple以分布式的方式并行地创建和处理。定义消息流主要是定义消息流中的Tuple。每个消息流在定义时都会分配一个ID,因为单向消息流很普遍,OutputFieldsDeclarer定义了一些方法可以定义一个流而不用指定其ID。在这种情况下,该流有一个默认的ID。 StreamGrouping消息流组...

Diana的博客 821

Storm拓扑并行度与及流分组策略

目录一、Storm拓扑的并行度(parallelism)介绍(1)运行拓扑的结构(2)配置拓扑的并行度(1)工作进程Worker数量(2)执行器Executor数量(3)任务Task数量(3)改变运行中拓扑的并行度二、Streaming Groupings流分组策略三、基于流分组策略应用程序的开发 一、Storm拓扑的并行度(parallelism)介绍 (1)运行拓扑的结构 工作进程: Worker Process,也称为Worker 执行器: Executor,即线程Thread 任务: Task 工作

蔡政洁的博客 833
上一篇: Storm高并发介绍
下一篇: Storm高并发运用WordSum
futureofstar
博客等级 码龄17年 0粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值