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

2024-01-05 08:52

本文主要是介绍【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

这篇关于【Storm实战】1.1 图解Storm的抽象概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/572335

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

usaco 1.1 Broken Necklace(DP)

直接上代码 接触的第一道dp ps.大概的思路就是 先从左往右用一个数组在每个点记下蓝或黑的个数 再从右到左算一遍 最后取出最大的即可 核心语句在于: 如果 str[i] = 'r'  ,   rl[i]=rl[i-1]+1, bl[i]=0 如果 str[i] = 'b' ,  bl[i]=bl[i-1]+1, rl[i]=0 如果 str[i] = 'w',  bl[i]=b

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme

图解TCP三次握手|深度解析|为什么是三次

写在前面 这篇文章我们来讲解析 TCP三次握手。 TCP 报文段 传输控制块TCB:存储了每一个连接中的一些重要信息。比如TCP连接表,指向发送和接收缓冲的指针,指向重传队列的指针,当前的发送和接收序列等等。 我们再来看一下TCP报文段的组成结构 TCP 三次握手 过程 假设有一台客户端,B有一台服务器。最初两端的TCP进程都是处于CLOSED关闭状态,客户端A打开链接,服务器端

图解可观测Metrics, tracing, and logging

最近在看Gophercon大会PPT的时候无意中看到了关于Metrics,Tracing和Logging相关的一篇文章,凑巧这些我基本都接触过,也是去年后半年到现在一直在做和研究的东西。从去年的关于Metrics的goappmonitor,到今年在排查问题时脑洞的基于log全链路(Tracing)追踪系统的设计,正好是对这三个话题的实践。这不禁让我对它们的关系进行思考:Metrics和Loggi

深度学习实战:如何利用CNN实现人脸识别考勤系统

1. 何为CNN及其在人脸识别中的应用 卷积神经网络(CNN)是深度学习中的核心技术之一,擅长处理图像数据。CNN通过卷积层提取图像的局部特征,在人脸识别领域尤其适用。CNN的多个层次可以逐步提取面部的特征,最终实现精确的身份识别。对于考勤系统而言,CNN可以自动从摄像头捕捉的视频流中检测并识别出员工的面部。 我们在该项目中采用了 RetinaFace 模型,它基于CNN的结构实现高效、精准的