【Storm实战】1.1 图解Storm的抽象概念

文章目录

  • 0. 前言
  • 1. Storm 中的抽象概念
    • 1.1 流 (Stream)
    • 1.2 拓扑 (Topology)
    • 1.3 Spout
    • 1.4 Bolt
    • 1.5 任务 (Task)
    • 1.6 工作者 (Worker)
  • 2. 形象的理解Storm的抽象概念
    • 2.1 流 (Stream)
    • 2.2 拓扑 (Topology)
    • 2.3 Spout
    • 2.4 Bolt
    • 2.5 任务 (Task)
    • 2.6 工作者 (Worker)
    • 场景1
    • 场景2
  • 3.参考文档

0. 前言

Storm 是一个分布式实时计算系统,用于处理大规模流式数据。它基于流处理模型,可以在一个分布式集群上运行,实时地处理和分析数据。Storm 提供了高可靠性、高吞吐量的数据流处理能力,可用于构建实时大数据分析应用和实时流处理任务。

在学习和使用 Storm 之前,我们需要对一些抽象概念有基本的了解。这些抽象概念包括流、拓扑、Spout、Bolt、任务和工作者。流是数据处理的基本单位,可以理解为一个无限的有序的元组序列。拓扑是一个由 Spout 和 Bolt 组成的数据流处理网络,定义了数据流从源头到最终目的地的路径。Spout 是数据源头,负责从外部源读取数据并封装成流。Bolt 是数据处理单元,负责接收输入流并进行处理。任务是在执行拓扑时运行在工作进程中的实际执行实例,每个 Spout 和 Bolt 组件可以配置为多个任务来实现并行处理。工作者是 Storm 运行在集群节点上的进程,可以执行一个或多个任务。

为了更好地理解这些抽象概念,可以将其类比为水力发电或水力传动系统。在这个类比中,流就像是河流,拓扑就像是水力发电系统,Spout 就像是水轮机,Bolt 就像是齿轮和发电机,任务就像是工人,工作者就像是工作站。

1. Storm 中的抽象概念

在学习Storm 之前,我们需要对Storm中的抽象概念有个基本的认识。方便我们后面写DEMO示例。
在这里插入图片描述
图片来源官方文档https://storm.apache.org/releases/2.6.0/Concepts.html

1.1 流 (Stream)

流是Storm中数据处理的基本概念。一个流可以理解为一个无限的、有序的元组(tuple)序列。在Storm中,元组是数据的基本单位,它是一个可以包含多种数据类型的键值对列表。流是可以在拓扑中的各个组件之间传输的。

1.2 拓扑 (Topology)

拓扑是Storm中最顶层的抽象,它定义了数据流从源头到最终目的地的整个路径。在Storm中,拓扑是由一系列的spouts和bolts组成的网络。Spouts用于生成数据流,而bolts则用于处理流经它们的数据。一旦提交到集群,拓扑将会不断运行,直到被显式地终止。

1.3 Spout

Spout是Storm拓扑中的数据源头,负责从外部源(如数据库、消息队列、文件系统等)读取数据并将其封装成流以供拓扑内的bolts处理。Spout可以发射多个流,并且能够对外部源的数据进行可靠或不可靠的读取。

1.4 Bolt

Bolt是拓扑中的数据处理单元,它负责接收来自spout或其他bolt的输入流,并进行处理,这些处理可以包括过滤、聚合、连接、写数据库等操作。处理完成后,bolt可以发射新的流到拓扑中的其他bolt进一步处理,或者将结果输出到外部系统。

1.5 任务 (Task)

在Storm中,任务是指在执行拓扑时,运行在工作进程中的实际执行实例。每个spout或bolt组件可以配置为多个任务来运行。任务数量决定了可用于处理数据的并行度。每个任务都会在集群某个节点的工作进程中的一个线程上执行。

1.6 工作者 (Worker)

工作者是Storm中运行在集群节点上的进程。工作者进程可以执行一个或多个任务。一个工作者进程只属于一个拓扑,但可以运行拓扑中多个任务(即,可以运行多个spout和bolt的实例)。通过分配更多的工作者进程,可以提高拓扑的并发度和处理能力。

以上概念构成了Storm的核心架构,理解它们可以帮助把握Storm的数据流处理和分布式计算模型。
在这里插入图片描述

2. 形象的理解Storm的抽象概念

可能很多同学看完上面的概念和图,也感觉似懂非懂的。好吧,那么我们通俗的利用水力发电或者水力传动系统这种常见的模型,来理解Storm 抽象概念的设计思想。

我搞了一个图来类比解释Storm的概念,我相信大家应该会有一定的收获。
在这里插入图片描述

通过这个水力发电系统的比喻,我相信大家一定可以直观地理解Storm中的流、拓扑、Spout、Bolt、任务和工作者是如何协同工作处理数据的。

2.1 流 (Stream)

想象一条河流,河流不断地流动,携带着水分子(这里的水分子可以类比为数据的元组)。流在Storm中就像这条河流,是连续不断地数据(元组)序列。

2.2 拓扑 (Topology)

把拓扑想象成是一个水力发电系统。这个系统由水轮机(Spouts)和一系列的齿轮与发电机(Bolts)组成。水轮机从河流(Stream)中捕捉水流(数据流),然后通过一系列的齿轮(处理步骤)传输至发电机,最终产生电力(处理后的数据)。

2.3 Spout

Spout可以视为水力发电系统中的水轮机,它不断从河流(外部数据源)中截取水流,并开始推动整个系统的运作。在Storm中,Spout负责不断地捕获外部数据,并将其封装成流,供后续的Bolts处理。

2.4 Bolt

Bolt就像是沿着水轮机的齿轮和发动机,它们接收从水轮机传来的动力(元组),执行各种操作(处理数据),比如研磨谷物或发电。在Storm中,Bolts可以执行多种数据转换操作,如过滤、聚合、写入数据库等。

2.5 任务 (Task)

任务可以想象成是工人在水轮机和发电机之间的每个环节上工作。如果这个系统需要处理更多的水流(数据),我们就需要更多的工人(任务)。在Storm中,增加任务的数量可以提高系统处理数据的能力。

2.6 工作者 (Worker)

工作者可以看作是整个水力发电系统的工作站或工厂。在这些工作站里,每个工人(任务)负责操作一套齿轮与发动机(执行Spout和Bolt的逻辑)。工厂越多,系统的处理能力就越强。在Storm中,我们可以增加工作者(进程)的数量来扩展拓扑的处理能力。

场景1

基于水轮发电机的思想。假设水流过发电机Bolt 后,此处的水流还具有动力,那么我们是不是可以再串行接一个齿轮和管道,用来供热(处理数据)。这时候我们上面的处理结构就会变成。如下
在这里插入图片描述

场景2

基于水轮发电机的思想。假设水流过发电机Bolt 后,此处的水流还具有动力,那么我们是不是可以再串行接一个齿轮和水磨,用来研磨谷物(处理数据),研磨完我们依然可以将水流分子(tuple)作为热源传递给供热管道(Bolt)进行供热处理。这时候我们上面的处理结构就会变成。如下
在这里插入图片描述

3.参考文档

storm 官方文档 https://storm.apache.org/releases/current/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/610410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解CAS及ABA问题

🌈🌈🌈今天给大家分享的是 CAS 问题。 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流! ✈️✈️✈️动动…

Hex2Bin转换软件、Bootloader 、OTA加密升级 、STM32程序加密、其他MCU同样适用

说明:这个工具可以将 Hex 文件 转换为 Bin 格式文件,软件是按自己开发 STM32 OAT 功能需求开发的一款辅助 上位机软件。 文中的介绍时 bootloader boot 文档在补充完善中... 有兴趣的朋友可留言探讨。 1. 软件功能: 1.生成 bin&#x…

基于模块自定义扩展字段的后端逻辑实现(二)

目录 一:创建表 二:代码逻辑 上一节我们详细讲解了自定义扩展字段的逻辑实现和表的设计,这一节我们以一个具体例子演示下,如何实现一个订单模块的自定义扩展数据。 一:创建表 订单主表: CREATE TABLE t_order ( …

VSCode C/C++(gdb)调试指南

1、安装插件 2、F5开启调试 左侧侧边栏->确保打开回调栈 右键函数栈->查看反汇编 3、打印寄存器、函数反汇编等 命令: 查看main反汇编 -exec disassemble /m main 查看寄存器 -exec info r 打印某个变量 -exec print s 或者 --s 打印寄存器,如p…

如何在没有密码的情况下将 iPhone 13/14/15 恢复出厂设置

您想知道如何在没有密码的情况下将 iPhone 13/14/15 恢复出厂设置吗? 出厂重置 iPhone 13/14/15 成为所有 iPhone 机型中最简单的。大多数情况下,iPhone 13/14/15 是在 iOS 15 或更高版本的 iOS 版本上,Apple 更新了无需密码重置 iPhone 13/…

IoT 物联网 MQTT 协议 5.0 版本新特性

MQTT 是一种基于发布/订阅模式的轻量级消息传输协议,专门为设备资源有限和低带宽、高延迟的不稳定网络环境的物联网场景应用而设计,可以用极少的代码为联网设备提供实时可靠的消息服务。MQTT 协议广泛应用于智能硬件、智慧城市、智慧农业、智慧医疗、新零…

GAMES101-Assignment5

一、问题总览 在这次作业中,要实现两个部分:光线的生成和光线与三角的相交。本次代码框架的工作流程为: 从main 函数开始。我们定义场景的参数,添加物体(球体或三角形)到场景中,并设置其材质&…

项目管理:风险的来源及管理方法

项目风险是项目管理中的难点之一,虽然我们无法将其完全消除,但可以提前做好准备,将风险降至最低。 项目风险如同暗礁潜伏,你和团队需时刻保持警惕。以下几种风险需特别关注: 措施不足:成本与行动的误差&…

加速科技ST2500 数模混合信号测试设备累计装机量突破500台!

国产数字机,测试中国芯!新年伊始,国产半导体测试设备领军企业加速科技迎来了振奋人心的一刻,ST2500 数模混合信号测试设备累计装机量突破500台!加速科技凭借其持续的创新能力、完善的解决方案能力、专业热忱的本地化服…

软件定义存储

软件定义存储源于VMware公司于2012年提出的软件定义的数据中心(SDDC)。存储作为软件定义的数据中心不可或缺的一部分,其以虚拟化为基础,但又不仅限于虚拟化。存储虚拟化一般只能在专门的硬件设备上应用,很多设备都是经…

笔记本摄像头模拟监控推送RTSP流

使用笔记本摄像头模拟监控推送RTSP流 一、基础安装软件准备 本文使用软件下载链接:下载地址 FFmpeg软件: Download ffmpeg 选择Windows builds by BtbN 一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。 EasyDarwin软件:Download Easy…

企业小文件多传输慢怎么办?怎么解决海量小文件传输慢的问题?

在当今信息时代,许多企业在文件传输过程中普遍面临一个棘手问题——小文件传输缓慢。这不仅对企业工作效率产生不良影响,还可能导致运营成本增加以及数据遗失与损坏的风险。那么,企业应该如何解决海量小文件传输缓慢的问题呢?本文…

高压MOS在适配器产品上的应用-REASUNOS瑞森半导体

一、适配器定义 电源适配器,英文Adapter通常指AC-DC(由交流输入转换为直流输出)的开关电源;一般由控制 IC、MOS管、整流肖特基管、电阻电容、磁性材料、DC 线、外壳等元器件及部件组成,通过整流、变压和稳压等转换形式…

第1章 引言

目录 1. 鸢尾花分类1.1 初识数据1.2 衡量模型是否成功:训练数据与测试数据1.3 要事第一:观察数据1.4 构建第一个模型:k近邻算法(KNeighborsClassifier)1.5 做出预测(predict)1.6 评估模型 1. 鸢…

【51单片机】延时函数delay的坑——关于无符号整型数据for语句“x >= 0“变成死循环

请认真看看以下延时函数是否正确,并且指出错误:(考考C语言功底) void delay_ms(unsigned int xms) //delay x ms {unsigned int x,y;for(xxms;x>0;x--)for(y124;y>0;y--); }废话少说,上正确代码: v…

linux ftp服务选择与ftp(vsftpd,Pure-FTPd)服务安装使用教程

一 linux ftp常用的服务软件 在Linux系统中,最常用的ftp有vsftpd,Pure-FTPd,ProFTPd,Wu-FTPd,glftpd,他们的特性优缺点如下对比图: 常用的5款linux ftp对比图: 软件特性优点缺点vsf…

unity C#中使用ref、out区别和使用案例

文章目录 ref 关键字out 关键字 在Unity(以及C#编程语言中), ref 和 out 都是用来传递参数的引用,这意味着它们允许函数修改实参变量,并且这些修改会反映到调用函数的地方。但它们之间确实存在一些关键区别和使用场景…

20、Kubernetes核心技术 - 基于Prometheus和Grafana搭建集群监控平台

目录 一、概述 二、监控平台架构图​编辑 三、部署 Prometheus 3.1、Prometheus简介 3.2、部署守护进程node-exporter 3.3、部署rbac 3.4、ConfigMap 3.5、Deployment 3.6、Service 3.7、验证Prometheus 四、部署Grafana 4.1、Deployment 4.2、Service 4.3、Ing…

Nginx实战 | 高性能HTTP和反向代理神器Nginx前世今生,以及它的“繁花之境”

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…

尺寸公差分析 -DTAS手机装配公差案例-国产-智能

小细节 大麻烦,公差仿真大改造 DTAS尺寸公差分析软件-国产-智能https://www.dtas-china.com/product.html 仿真要求说明:计算长边装配间隙G1-G6 步骤一:首先双面胶②放在一个工装中,外形定位,然后将后盖①放入到工…