【Storm】【一】简介

news2024/11/28 6:39:43

介绍

1.1 简介

Storm 是 Apache 旗下免费开源的分布式实时计算框架。Storm可以轻松、可靠地处理无限数据流,对实时分析、在线机器学习、连续计算、分布式RPC,ETL等提供高效、可靠的支持。

在这里插入图片描述

1.2 什么是分布式计算

分布式计算,将一个任务分解为多个任务,分发给多台计算机,节约整体计算时间。

注:

集中式计算,与分布式相对,一个任务一台计算机负责,多个任务多个计算机,不节约整体计算时间。

1.3 Storm 分布式实时计算框架的要点

开源,遵循Apache理念,项目创立便是开源
流式计算,非常的快,每个节点每秒可以处理百万元组数据
③ 适用于数据实时处理而非批量处理(例如Hadoop)
分布式系统,可以充分的利用计算机集群资源
⑤ 擅长处理海量数据

1.4 与Hadoop比较

与 Hadoop磁盘级计算不同,storm为流式计算即内存计算,Hadoop在进行计算时数据在磁盘中需要读写磁盘,而读取内存比读写磁盘的速度快n个数量级别。磁盘访问延迟约为内存访问延迟的75000倍,所以storm更快。两者面向的领域不同,Hadoop为批量处理,基于任务调度;storm为实时处理,基于流。

在这里插入图片描述

注:

延迟,指数据从产生到运行计算产生结果的时间。
吞吐,指系统单位处理的数据量。

1.5 优势

Storm 拥有低延迟、高性能、分布式、可扩展、容错等特性,可确保消息不丢失且严格有序以下六点为Storm优势:
简单的计算编程,类似于MapReduce降低并行处理的复杂性,Storm降低了进行实时处理的复杂性。
实时性,系统不停运转等待任务到达,接受任务后迅速处理。
可伸缩性,随时添加新的节点扩充集群的计算能力。
容错性,管理所有工作进程和节点的故障,并且循环修复故障。
水平扩展,计算是在多个线程、进程和服务器之间并行进行的。
多语言支持,Storm提供多语言协议支持。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。

1.6 Storm的数据流模型

在这里插入图片描述

Storm分布式计算结构称为Topology(拓扑),由stream(数据流)、spout(数据流的生成者)、bolt(运算)组成。

1.6.1 topology

Storm分布式计算结构称为Topology(拓扑),类似于网络拓扑的一种虚拟结构,地位上等同于Hadoop的MR任务,与MR不同的是MR运行一段时间就会完成,而Topology会一直运行知道手动kill掉。

1.6.2 stream

数据流,分布式并行创建与处理的无界的连续元组,关键是定义tuple

1.6.3 tuple

元组,storm的核心数据结构,消息发送的最小单元,tuple是包含一个或多个键值对的列表

1.6.4 spout

spout为一个Storm Topology的主要数据入口,充当采集器的角色,连接到数据源,将数据转化为一个个tuple,并将tuple作为数据流进行发射。

注:

Storm为spout提供了简易的API,开发一个spout的主要工作就是编写代码从数据源或
者API消费数据。数据源的种类:
① Web或者移动程序的点击数据
② 应用程序的日志数据
③ 传感器的输出

1.6.5 bolt

业务逻辑运算节点,可以有多个(并行与串行均可,以实际业务决定),选择性地输出一个或者多个数据流。bolt可以订阅多个spout或者其他bolt发射的数据流,这样可以建立多个复杂的数据流转换网络。在定义Topology时,需要为每一个bolt指定接收什么样的流作为输入(通过Storm grouping)。

注:

bolt可以执行各式各样的处理功能,通常我们会将业务逻辑写在bolt,典型的功能:
① 过滤tuple
② 连接(join)和聚合操作(aggregation)
③ 计算
④ 数据库读写

1.6.6 数据流分组

Storm grouping(数据流分组)定义一个Topology中每个bolt接受什么样的流作为输入。Storm定义了六种内置数据流分组的定义:
随机分组(Shuffle grouping):这种方式下元组会被尽可能随机地分配到 bolt 的不同任务。(tasks)中,使得每个任务所处理元组数量能够能够保持基本一致,以确保集群的负载均衡。
按字段分组(Fields grouping):这种方式下数据流根据定义的“字段”来进行分组。例如,如果某个数据流是基于一个名为“user-id”的字段进行分组的,那么所有包含相同的“user-id”的元组都会被分配到同一个task中,这样就可以确保消息处理的一致性。
完全分组(All grouping):将所有的tuple复制后分发给所有的bolt task。每个订阅的task都会接收到tuple的拷贝,所有在使用此分组时需小心使用。
全局分组(Global grouping):这种方式下所有的数据流都会被发送到 Bolt 的同一个任务中,也就是 id 最小的那个任务。
不分组(None grouping):使用这种方式说明你不关心数据流如何分组。目前这种方式的结果与随机分组完全等效,不过未来 Storm 社区可能会考虑通过非分组方式来让 Bolt 和它所订阅的 Spout 或 Bolt 在同一个线程中执行。
指向型分组(Direct grouping):数据源会调用emitDirect()方法来判断一个tuple应该由那个Storm组件来接收。只能在声明了是指向型的数据流上使用。

1.7 可靠的数据处理

Storm 可以通过拓扑来确保每个发送的元组都能得到正确处理。通过跟踪由 Spout 发出的每个元组构成的元组树可以确定元组是否已经完成处理。每个拓扑都有一个“消息延时”参数,如果 Storm 在延时时间内没有检测到元组是否处理完成,就会将该元组标记为处理失败,并会在稍后重新发送该元组。

注:

为了充分利用 Storm 的可靠性机制,你必须在元组树创建新结点的时候以及元组处理完成的时候通知 Storm。这个过程可以在 Bolt 发送元组时通过 OutputCollector 实现:在 emit 方法中实现元组的锚定(Anchoring),同时使用 ack 方法表明你已经完成了元组的处理。

Storm的tuple锚定和应答确认机制中,当打开可靠传输的选项,传输到故障节点上的tuples将不会受到应答确认,spout会因为超时重新发射原始的tuple。这样的过程会一直重复直到Topology从故障中恢复开始正常处理数据。

在Storm集群中真正运行Topology的主要有三个实体:工作进程、线程和任务。Storm集群中的每台机器上都可以运行多个工作进程,每个工作进程又可创建多个线程,每个线程可以执行多个任务,任务是真正进行数据处理的实体,我们开发的spout、bolt就是作为一个或者多个任务的方式执行的。因此,计算任务在多个线程,进程和服务器之间并行进行,支持灵活的水平扩展。

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

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

相关文章

云解析专家解密《狂飙》剧中京海市人民政府域名访问真相

这段时间,最火的国产剧当属《狂飙》无疑。尽管不久前迎来了大结局,但这部剧的热度依然不减,成为大家茶余饭后热议的话题。 出于对这部剧的喜爱,小编开启了二刷模式,在重温剧情的同时,对于其中的一些细节也…

Windows 10注册表损坏怎么办?

注册表是一个复杂的数据库,如果不进行维护,它就会填充损坏的和孤立的注册表项。尤其是对Windows进行升级时,损坏或丢失的注册表项也会不断累积,从而影响您的系统性能。如果您的Windows 10系统正在经历注册表损坏的问题&#xff0c…

SpringBoot(powernode)

SpringBoot(powernode) 目录SpringBoot(powernode)一、第一个SpringBoot项目二、打jar包启动测试三、个性化banner四、常用注解4.1回顾spring和java的注解4.1.1 spring标注类的注解:4.1.2 spring标注方法的注解&#x…

linux的文件权限介绍

文件权限 在linux终端输入 ls -lh 出现下面界面 介绍 基本信息 其中的开头代表着文件类型和权限 而 root 和kali 则分别代表用户名和用户组名用户名顾名思义就是这个文件属于哪一个用户用户组是说自己在写好一个文件后,这个文件是属于该用户所有,…

剑指 Offer 63. 股票的最大利润

剑指 Offer 63. 股票的最大利润 难度:middle\color{orange}{middle}middle 题目描述 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 …

尚硅谷《Redis7》(小白篇)

尚硅谷《Redis7 》(小白篇) 02 redis 是什么 官方网站: https://redis.io/ 作者 Git Hub https://github.com/antirez 03 04 05 能做什么 06 去哪下 Download https://redis.io/download/ redis中文文档 https://www.redis.com.cn/docu…

详解量子计算:相位反冲与相位反转

前言 本文需要对量子计算有一定的了解。需要的请翻阅我的量子专栏,这里不再涉及基础知识的科普。 量子相位反冲是什么? 相位反转(phase kickback)是量子计算中的一种现象,通常在量子算法中使用,例如量子…

亲测实现PopupWindow显示FlowLayout流式布局带固定文本/按钮(位置可改)

实现:动态绘制并带固定文本/按钮,固定文本/按钮固定在最后一行的右边且垂直居中,若最后一行放不下,则新开一行放到新行的右边且垂直居中(新行的行高跟前面的一样),可单选、多选、重置。 注&…

SQL零基础入门学习(六)

SQL零基础入门学习(六) SQL零基础入门学习(五) SQL 通配符 通配符可用于替代字符串中的任何其他字符。 SQL 通配符用于搜索表中的数据。 在 SQL 中,可使用以下通配符: 演示数据库 在本教程中&#xff…

robotframework自动化测试环境搭建

环境说明 win10 python版本&#xff1a;3.8.3rc1 安装清单 安装配置 selenium安装 首先检查pip命令是否安装&#xff1a; C:\Users\name>pipUsage:pip <command> [options]Commands:install Install packages.download Do…

掌握这10个测试方法,软件测试已登堂入室

当然还有很多测试方法&#xff0c;这些要根据实际不同应用场景而变化&#xff0c;这里就以键盘为例子进行测试方法的讲解。 1.需求测试 需求这种大家都知道这种主要是就是甲方或者项目经理写的&#xff0c;或者某些人需要什么我们就给什么&#xff0c;一般来讲一个东西给到…

API 接口应该如何设计?如何保证安全?如何签名?如何防重?

说明&#xff1a;在实际的业务中&#xff0c;难免会跟第三方系统进行数据的交互与传递&#xff0c;那么如何保证数据在传输过程中的安全呢&#xff08;防窃取&#xff09;&#xff1f;除了https的协议之外&#xff0c;能不能加上通用的一套算法以及规范来保证传输的安全性呢&am…

训练一个ChatGPT需要多少数据?

“风很大”的ChatGPT正在席卷全球。作为OpenAI在去年底才刚刚推出的机器人对话模型&#xff0c;ChatGPT在内容创作、客服机器人、游戏、社交等领域的落地应用正在被广泛看好。这也为与之相关的算力、数据标注、自然语言处理等技术开发带来了新的动力。自OpenAI发布ChatGPT以来&…

好用的SQL工具盘点:从学习到工作总有一款适合你

标题一.入坑阶段&#xff08;学习入门&#xff09;&#xff1a; 这个阶段一般就是小白&#xff0c;想学习SQL语言&#xff0c;然后到处找软件&#xff0c;找免费破解版找半天&#xff0c;找到了半天安装不下来&#xff0c;还可能把自己电脑搞中毒。 其实对于小白来说&#xf…

Shiro常用的Filter过滤器

Shiro常用的Filter过滤器 核心过滤器&#xff1a;DefaultFilter&#xff0c;配置了的相应路径的相应的拦截器进行处理 常用过滤器 authc&#xff1a;org.apache.shiro.web.filter.authc.FormAuthenticationFilter 需要认证登录才能访问 user&#xff1a;org.apache.shiro.w…

动作识别、检测、分割、解析相关数据集介绍

文章目录动作识别UCF101(UCF101 Human Actions dataset)Kinetics (Kinetics Human Action Video Dataset)动作检测 / 时序动作定位CharadesActivityNetMulti-THUMOSUCF101-24IKEA ASM动作分割Breakfast (The Breakfast Actions Dataset)GTEA (Georgia Tech Egocentric Activity…

谷粒学院项目对应知识点

1、数据库分库分表 1.1、业务分库 按照业务模块将数据分散到不同的数据库服务器&#xff0c;比如用户数据、商品数据、订单数据存放在三个不同的数据库服务器中&#xff0c;分散存储和访问压力。但也会带来一些问题&#xff1a; join 操作问题&#xff1a;业务分库后&#x…

[qiankun]-多页签缓存

[qiankun]-多页签缓存环境功能需求多页签缓存方案方案1.主服务进行html替换方案2.微服务vnode 替换方案3.每个微服务都不卸载微服务加载方式的选择微服务的路由路径选择微服务的缓存工具微服务的容器使用tab作为微服务的挂载容器使用微服务路由作为微服务的挂载容器场景描述微服…

day18_集合_List

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、集合框架体系 二、Collection 三、泛型 四、迭代 五、List 六、ArrayList 七、LinkedList 零、 复习昨日 throw和throws什么区别 throwthrows位置方法…

Word中批量调整图片大小

当一个文档中图片较多&#xff0c;又需要调整图片大小时&#xff0c;这时可以通过“宏”执行代码来批量调整。打开一个Word文档。“AltF8"键打开宏。设置“宏名”&#xff0c;并单击“创建”。创建完宏后&#xff0c;将进入Visual Basic 编辑器界面。在代码编辑区全选&…