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

news2024/11/18 15:32:23

文章目录

  • 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.coloradmin.cn/o/1358999.html

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

相关文章

如何打造家居产业数字化转型范式?林氏家居以数智供应链作答

近年来,我国房地产行业逐步进入深度调整期。作为下游产业,家居家装行业的发展也来到了新阶段。业内人士指出,新房市场成交规模收缩,家居家装企业们开始整合资源,向存量房市场、产品科技化以及数字化转型。 国家层面出…

教学/直播/会议触摸一体机定制_基于展锐T820安卓核心板方案

触控一体机是一种集先进的触摸屏、工控和计算机技术于一体的设备。它取代了传统的键盘鼠标输入功能,广泛应用于教学、培训、工业、会议、直播、高新科技展示等领域。触摸一体机的应用提升了教学、会议和展示的互动性和信息交流。 触摸一体机方案基于国产6nm旗舰芯片…

设置进程优先级

#include <windows.h>int main() {// 获取当前进程的句柄HANDLE hProcess GetCurrentProcess();// 设置当前进程的优先级为高SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS);// 执行其他代码return 0; }进程优先级 标志 idle &#xff08;低&#xff09; IDL…

Python (十七) __name__ == ‘__main__‘ 作用

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

小学副科老师轻松吗

在小学里&#xff0c;除了语文、数学和英语这些主科&#xff0c;还有许多副科老师&#xff0c;他们的工作日常是什么样的呢&#xff1f;今天&#xff0c;让我们一起来揭秘小学副科老师的一天。 备课&#xff1a;在忙碌中寻找创意的火花 副科老师同样需要花费大量时间进行备课…

视频剪辑指南:如何将多个视频快速批量合并的方法

在日常生活和工作中&#xff0c;经常要将多个视频片段合并为一个完整的视频。但是手动剪辑每个视频不仅费时&#xff0c;而且效率低下。那么如何解决这个问题呢&#xff0c;可以采用一些快速批量合并视频的方法。现在一起来看看云炫AI智剪如何批量合并视频的具体步骤吧。 合并…

Windows 使用 nmap软件测试 UDP 端口

下载windows版nmap &#xff0c;下载后双机默认安装。 Download the Free Nmap Security Scanner for Linux/Mac/Windows 打开CMD &#xff0c; 输入 cd C:\Program Files (x86)\Nmap C:\Program Files (x86)\Nmap>ncat -z -v -u ntp.aliyun.com 123 Ncat: Version 7.80 ( …

《现代C++语言核心特性解析》笔记(三)

二十四、三向比较&#xff08;C20&#xff09; 1. “太空飞船”&#xff08;spaceship&#xff09;运算符 C20标准新引入了一个名为“太空飞船”&#xff08;spaceship&#xff09;的运算符 <>&#xff0c;它是一个三向比较运算符。<> 之所以被称为“太空飞船”运…

六、HTML 段落

HTML 可以将文档分割为若干段落。 一、HTML 段落 段落是通过 <p> 标签定义的。 <p>这是一个段落 </p> <p>这是另一个段落</p> 注意&#xff1a;浏览器会自动地在段落的前后添加空行。&#xff08;</p> 是块级元素&#xff09; 二、不…

篮球羽毛球乒乓球体育场馆预订小程序开发

开发一款专业的小程序&#xff0c;用于多场馆场地的预定和管理&#xff0c;包括体育馆、羽毛球馆、兵乒球馆、篮球馆等各类场馆。此小程序旨在为场馆提供全方位的运营解决方案&#xff0c;并满足会员的不同需求。 该小程序的核心功能特性包括&#xff1a; 场馆管理&#xff…

排除启动类故障----三大实验

目录 一、模拟破坏mbr和分区表然后修复 二、修复grub引导故障 三、遗忘root用户密码 一、模拟破坏mbr和分区表然后修复 1、mbr处于第一块磁盘的第一个物理扇区&#xff0c;总共512个字节&#xff0c;前446个字节是grub程序&#xff0c;后面64个字节是分区表 2、故障原因&a…

安卓平板电脑,5G通讯加持,帮你的通讯效率提提速

安卓平板电脑&#xff0c;作为一种集通讯、娱乐、工作于一体的便携设备&#xff0c;近年来随着5G通讯技术的发展&#xff0c;其在通讯效率方面迎来了新的提升。5G通讯加持&#xff0c;不仅为安卓平板电脑带来了更快速、更稳定的数据传输能力&#xff0c;也为用户的通讯效率提供…

ZigBee协议栈 -- 协议栈版本与IAR版本适配说明(Zstack2.5.1a + IAR10.30.1)

文章目录 协议栈安装工程适配 在讲到ZigBee协议栈的文章中所用的协议栈版本是Zstack2.5.1a&#xff0c;对于Zstack2.5.1a运行在IAR8.10中是可以完全适配进行编译开发的&#xff0c;现在较新版本的IAR都是10的版本以上了&#xff0c;有部分开发者习惯使用最新版本来获得更好的开…

freeRTOS的栈溢出检测机制

1、前言 后面的分析是以RISC-V架构为例&#xff0c;不同的架构在代码实现上有些许区别RISC-V架构使用的满减栈 2、任务控制块介绍&#xff08;TCB&#xff1a;task controller Block&#xff09; typedef struct tskTaskControlBlock {volatile StackType_t * pxTopOfSta…

Redis基础学习一

1. Redis 入门 1.1. Redis 诞生历程 1.1.1.从一个故事开始 08 年的时候有一个意大利西西里岛的小伙子&#xff0c;笔名 antirez&#xff08;http://invece.org/&#xff09;&#xff0c;创建了一个访客信息网站 LLOOGG.COM。有的时候我们需要知道网站的访问情况&#xff0c;…

计算化学顶刊封面!玻色量子联合上海交大张健课题组发表量子计算重要成果

​2023年12月13日&#xff0c;北京玻色量子科技有限公司&#xff08;以下简称“玻色量子”&#xff09;联合上海交通大学在中科院分区1区、计算化学领域Top刊物JCTC&#xff08;Journal of Chemical Theory and Computation&#xff09;内刊的封面上发表了以“Encoding Molecul…

两步带你解决IDEA 插件下载安装慢、超时、不成功问题

两步带你解决IDEA 插件下载安装慢、超时、不成功问题 1. 查找 国内插件的节点IP地址2. 修改本地hosts文件 > 今天在安装idea中的插件时&#xff0c;又双叒叕出现了这个问题&#xff0c;下载一个几MB的插件巨慢&#xff0c;所以写一下它的解决方案 1. 查找 国内插件的节点IP地…

中国文化文物和旅游统计年鉴,数据含pdf、excel等格式,文本形式呈现,可预览数据

基本信息. 数据名称: 中国旅游统计年鉴 数据格式: pdf、xls不定 数据时间: 2012-2020年 数据几何类型: 文本 数据坐标系: —— 数据来源&#xff1a;文化和旅游部、网络公开数据 原名为《中国旅游统计年鉴》2020年后更名为《中国文化文物和旅游统计年鉴》&#xff…

MongoDB批量写入操作

一、概述 MongoDB为客户端提供了批量执行写入操作的能力。批量写入操作影响单个集合。MongoDB允许应用程序确定批量写入操作所需的可接受确认级别。 db.collection.bulkWrite&#xff08;&#xff09;方法提供了执行批量插入、更新和删除操作的能力。 MongoDB还支持通过db.col…

跨境电商干货!独立站流量七大来源,这些你都知道吗?

如果要问做跨境电商独立站最烧钱的地方在哪里&#xff0c;那肯定就是流量推广这一块了&#xff0c;这也是做跨境电商独立站的必修课&#xff0c;要给我们的独立站引流&#xff0c;首先必须知道独立站流量从哪里来&#xff0c;今天龙哥就给大家盘点独立站七大流量来源&#xff0…