【Storm】【二】Storm和流处理简介

news2024/11/18 20:33:47

Storm和流处理简介

一、Storm

1.1 简介

Storm 是一个开源的分布式实时计算框架,可以以简单、可靠的方式进行大数据流的处理。通常用于实时分析,在线机器学习、持续计算、分布式 RPC、ETL 等场景。Storm 具有以下特点:

  • 支持水平横向扩展;
  • 具有高容错性,通过 ACK 机制每个消息都不丢失;
  • 处理速度非常快,每个节点每秒能处理超过一百万个 tuples ;
  • 易于设置和操作,并可以与任何编程语言一起使用;
  • 支持本地模式运行,对于开发人员来说非常友好;
  • 支持图形化管理界面。

1.2 Storm 与 Hadoop对比

Hadoop 采用 MapReduce 处理数据,而 MapReduce 主要是对数据进行批处理,这使得 Hadoop 更适合于海量数据离线处理的场景。而 Strom 的设计目标是对数据进行实时计算,这使得其更适合实时数据分析的场景。

1.3 Storm 与 Spark Streaming对比

Spark Streaming 并不是真正意义上的流处理框架。 Spark Streaming 接收实时输入的数据流,并将数据拆分为一系列批次,然后进行微批处理。只不过 Spark Streaming 能够将数据流进行极小粒度的拆分,使得其能够得到接近于流处理的效果,但其本质上还是批处理(或微批处理)。

在这里插入图片描述

1.4 Strom 与 Flink对比

storm 和 Flink 都是真正意义上的实时计算框架。其对比如下:

stormflink
状态管理无状态有状态
窗口支持对事件窗口支持较弱,缓存整个窗口的所有数据,窗口结束时一起计算窗口支持较为完善,自带一些窗口聚合方法,
并且会自动管理窗口状态
消息投递At Most Once
At Least Once
At Most Once
At Least Once
Exactly Once
容错方式ACK 机制:对每个消息进行全链路跟踪,失败或者超时时候进行重发检查点机制:通过分布式一致性快照机制,
对数据流和算子状态进行保存。在发生错误时,使系统能够进行回滚。

注 : 对于消息投递,一般有以下三种方案:

  • At Most Once : 保证每个消息会被投递 0 次或者 1 次,在这种机制下消息很有可能会丢失;
  • At Least Once : 保证了每个消息会被默认投递多次,至少保证有一次被成功接收,信息可能有重复,但是不会丢失;
  • Exactly Once : 每个消息对于接收者而言正好被接收一次,保证即不会丢失也不会重复。

二、流处理

2.1 静态数据处理

在流处理之前,数据通常存储在数据库或文件系统中,应用程序根据需要查询或计算数据,这就是传统的静态数据处理架构。Hadoop 采用 HDFS 进行数据存储,采用 MapReduce 进行数据查询或分析,这就是典型的静态数据处理架构。

在这里插入图片描述

2.2 流处理

而流处理则是直接对运动中数据的处理,在接收数据的同时直接计算数据。实际上,在真实世界中的大多数数据都是连续的流,如传感器数据,网站用户活动数据,金融交易数据等等 ,所有这些数据都是随着时间的推移而源源不断地产生。

接收和发送数据流并执行应用程序或分析逻辑的系统称为流处理器。流处理器的基本职责是确保数据有效流动,同时具备可扩展性和容错能力,Storm 和 Flink 就是其代表性的实现。

在这里插入图片描述

流处理带来了很多优点:

  • 可以立即对数据做出反应:降低了数据的滞后性,使得数据更具有时效性,更能反映对未来的预期;

  • 可以处理更大的数据量:直接处理数据流,并且只保留数据中有意义的子集,然后将其传送到下一个处理单元,通过逐级过滤数据,从而降低实际需要处理的数据量;

  • 更贴近现实的数据模型:在实际的环境中,一切数据都是持续变化的,想要通过历史数据推断未来的趋势,必须保证数据的不断输入和模型的持续修正,典型的就是金融市场、股票市场,流处理能更好地处理这些场景下对数据连续性和及时性的需求;

  • 分散和分离基础设施:流式处理减少了对大型数据库的需求。每个流处理程序通过流处理框架维护了自己的数据和状态,这使其更适合于当下最流行的微服务架构。

参考资料

  1. What is stream processing?
  2. 流计算框架 Flink 与 Storm 的性能对比

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

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

相关文章

基于 explore_lite包 的单个机器人自主探索建图

文章目录一、简介二、安装 explore_lite三、launch 文件配置四、实验效果五、常见问题机器人自主建图有很多方式,比如基于位置边界的map-explore,基于快速搜索树的rrt-explore,指定区域自主探索建图frontier-explore,这几种方法各…

SQL速查

学习自C语言中文网SQL教程笔记,该笔记为速查笔记,学习还是看原教程文章:http://c.biancheng.net/sql/ SQL命令 SQL 是关系型数据库的标准语言,SQL关键字不区分大小写 SQL语句分为以下三种类型: DML: Data Manipulat…

中国不缺高端产品,缺的只是高端服务

作者 | 曾响铃 文 | 响铃说 最近,响铃受邀参加了讯飞智能办公本莫比俱乐部在广州举办的用户研学活动,感触颇多。 为什么会有这趟经历?说来也巧,前段时间因为开会需要入手了讯飞智能办公本X2,成了他们的用户&#xf…

20- tensorflow实现 10_monkeys分类 (tensorflow系列) (项目二十)

项目要点 10-monkey-species,是十个种类的猴子的图像集。txt 文件读取: labels pd.read_csv( ./monkey_labels.txt , header 0)训练数据 图片数据增强: # 图片数据生成器 # 图片数据生成器 train_datagen keras.preprocessing.image.ImageDataGenerator(rescal…

docker升级后启动失败 需要指定storage driver

问题描述:闲来无事就在开发电脑上执行了下sudo apt-get upgrade 升级下软件, 升级后docker启动失败.使用 journalctl -xeu docker.service 查看docker执行日志:Mar 04 16:48:10 pop-os dockerd[39273]: time"2023-03-04T16:48:10.35187991208:00&qu…

[Java代码审计]—OFCMS

环境搭建 下载地址:https://gitee.com/oufu/ofcms/repository/archive/V1.1.2?formatzip 项目导入idea,创建数据库,配置下tomcat就行,但要注意必须tomcat>8.5,mysql>5.7 漏洞分析 任意文件写入 com.ofsoft…

打包可执行文件

将Python脚本打包成可执行文件的方法:使用pip安装PyInstaller:pip install pyinstaller打开终端并导航到包含Python脚本的目录。运行PyInstaller创建可执行文件:pyinstaller --onefile phonequeryresult.py将my_script.py替换为您的脚本名称。…

SpringBoot(tedu)——day01——环境搭建

SpringBoot(tedu)——day01——环境搭建 目录SpringBoot(tedu)——day01——环境搭建零、今日目标一、IDEA2021项目环境搭建1.1 通过 ctrl鼠标滚轮 实现字体大小缩放1.2 自动提示设置 去除大小写匹配1.3 设置参数方法自动提示1.4 设定字符集 要求都使用UTF-8编码1.5 设置自动编…

LDO的强力对手

开题前咋们先来温习下LDO的特点以及选型要点: 特点:纹波噪声小,响应快,低静态电流,外围电路简单;损耗大,输出电流小。常用于小电流的模拟电路供电。 选型要点:纹波噪声&#xff0c…

TEX:文档的布局与组织

文章目录标准的类选项指定纸张大小页面格式其他选项与某些选项相关的参数页面样式页眉页的编号fancyhdr页眉页脚宏包(重)定义fancy页面样式Using extramarks文档中页面风格切换与段落有关的距离页面格式单双列页面文档中的部分标题摘要章节附录书的结构目录表自动条目显示目录表…

XMLHttpRequest、ajax、Promise、axios、async await

1.XMLHttpRequest(xhr) 什么是xhr xhr是浏览器提供的js对象,通过它来向服务器来请求资源。jquery中的Ajax是基于xhr对象来封装资源的 使用xhr发起get请求 // 1. 创建 XHR 对象var xhr new XMLHttpRequest()console.log(xhr, 我是xhr);// 2. 调用 open 函数xhr.…

性能优化(2)-渲染优化

一、渲染优化 如果把浏览器呈现页面的整个过程一分为二,前面所讲的主要是浏览器为呈现页面请求所需资源的部分;本章将主要关注浏览器获取到资源后,进行渲染部分的相关优化内容。 在前面的前端页面的生命周期课程中,介绍过关键渲染路径的概念,浏览器通过这个过程对HTML,CSS, J…

<学习笔记>从零开始自学Python-之-web应用框架Django( 十二)上下文处理器

1.在模板中处理上下文处理 上下文就是一系列模板变量和相应的值。模板使用上下文填充变量,放到标签里显示在页面。在 Django 中,上下文使用 django.template 模块中的 Context 类表示。 它的构造方法接受一个可选参数:一个字典&#xff0…

HCIE-Cloud Computing LAB备考第二步:逐题攻破--第二题:FusionAccess-思维导图+题目=建立逻辑

第二题 FusionAccess markmap思维导图1 将上述思维导图跟下述题目结合,以题目顺序辅助记忆思维导图,有了思维大纲,做起实验,也就有逻辑线路,必定手掐把拿。 2.1 搭建FA实验环境(随机二考一) FA1、FA2两台服务器,请通过VNC登陆,按照题目要求根据服务器参数选择安装对…

推荐几款主流好用的markdown编辑器

介绍 随着技术的不断发展和人们对效率的追求,Markdown 编辑器已经成为了许多人写作的首选工具。Markdown 是一种轻量级的标记语言,使用简单,方便快捷,且可以方便地转换成各种格式的文件。在这篇文章中,我们将介绍几款…

移动端适配之动态 rem 方案

代码 就是设置浏览器字体&#xff0c;从而实现根据屏幕动态计算大小 <script>const WIDTH 750; // 设计图尺寸const setView () > {document.documentElement.style.fontSize screen.width / WIDTH "px";};window.onorientationchange setView;setVi…

JUC入门 | 黑马

一、进程和线程 进程 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至CPU&#xff0c;数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理I0的 当一个程序被运行&a…

OpenGL中的坐标系

1、2D笛卡尔坐标系2D笛卡尔坐标系跟我们高中的时候学习的坐标系一样&#xff0c;是由x、y决定的。2、3D笛卡尔坐标系3D笛卡尔坐标系坐标由x、y、z决定&#xff0c;满足右手定则。3、视口glViewport(GLint x,GLint y,GLsizei width,GLsizei height)窗口和视口大小可以相同&#…

手敲Mybatis-反射工具天花板

历时漫长的岁月&#xff0c;终于鼓起勇气继续研究Mybatis的反射工具类们&#xff0c;简直就是把反射玩出花&#xff0c;但是理解起来还是很有难度的&#xff0c;涉及的内容代码也颇多&#xff0c;所以花费时间也比较浩大&#xff0c;不过当了解套路每个类的功能也好&#xff0c…

@mixin与@include介绍

目录mixin与include介绍定义一个mixin使用mixin传递变量如何引入mixinmixin与include介绍 在Sass里面&#xff0c;我们经常会见到mixin与include。 其中 mixin允许定义一个可以在整个样式表中重复使用的样式 include就是将我们定义的mixin引入到文档中 定义一个mixin mixin…