【Spark分布式内存计算框架——Spark Streaming】1. Streaming 概述(上)Streaming 应用场景、Lambda 架构

news2024/12/19 22:36:12

前言

在很多实时数据处理的场景中,都需要用到流式处理(Stream Process)框架,Spark也包含了两个完整的流式处理框架Spark Streaming和Structured Streaming(Spark 2.0出现),先阐述流式处理框架,之后介绍Spark Streaming框架使用。

1. Streaming 概述

在传统的数据处理过程中,我们往往先将数据存入数据库中,当需要的时候再去数据库中进行检索查询,将处理的结果返回给请求的用户;另外,MapReduce 这类大数据处理框架,更多应用在离线计算场景中。而对于一些实时性要求较高的场景,我们期望延迟在秒甚至毫秒级别,就需要引出一种新的数据计算结构——流式计算,对无边界的数据进行连续不断的处理、聚合和分析。

1.1 Streaming 应用场景

如下的场景需求, 仅仅通过传统的批处理/离线处理/离线计算/处理历史数据是无法完成的:

1)、电商实时大屏:每年双十一时,淘宝和京东实时订单销售额和产品数量大屏展示,要求:

  • 数据量大,可能每秒钟上万甚至几十万订单量
  • 快速的处理,统计出不同维度销售订单额,以供前端大屏展示
    2)、商品推荐:京东和淘宝的商城在购物车、商品详情等地方都有商品推荐的模块,商品推荐的要求:
  • 快速的处理, 加入购物车以后就需要迅速的进行推荐
  • 数据量大
  • 需要使用一些推荐算法
    3)、工业大数据:现在的工场中, 设备是可以联网的, 汇报自己的运行状态, 在应用层可以针对这些数据来分析运行状况和稳健程度, 展示工件完成情况, 运行情况等,工业大数据的需求:
  • 快速响应, 及时预测问题
  • 数据是以事件的形式动态的产品和汇报
  • 因为是运行状态信息, 且一般都是几十上百台机器, 所以汇报的数据量很大
    4)、集群监控:一般的大型集群和平台, 都需要对其进行监控,监控的需求
  • 要针对各种数据库, 包括 MySQL, HBase 等进行监控
  • 要针对应用进行监控, 例如 Tomcat, Nginx, Node.js 等
  • 要针对硬件的一些指标进行监控, 例如 CPU, 内存, 磁盘 等
  • 工具的日志输出是非常多的, 往往一个用户的访问行为会带来几百条日志, 这些都要汇报, 所以数据量比较大
  • 要从这些日志中, 聚合系统运行状况

上述展示场景需要实时对数据进行分析处理,属于大数据中领域:实时流式数据处理,概况应用场景如下几个大方面:
在这里插入图片描述

1.2 Lambda 架构

Lambda架构是由Storm的作者Nathan Marz提出的一个实时大数据处理框架。Marz在Twitter工作期间开发了著名的实时大数据处理框架Storm,Lambda架构是其根据多年进行分布式大数据系统的经验总结提炼而成。
在这里插入图片描述
Lambda架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错、低延时和可扩展等。Lambda架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成Hadoop,Kafka,Storm,Spark,Hbase等各类大数据组件。
在这里插入图片描述
Lambda架构通过分解的三层架构来解决该问题:批处理层(Batch Layer),速度层(Speed Layer)和服务层(Serving Layer)。

1)、批处理层(Batch Layer)

  • 批处理层主用由Hadoop来实现,负责数据的存储和产生随意的视图数据;
  • 承担了两个职责:存储Master Dataset,这是一个不变的持续增长的数据集;针对这个Master Dataset进行预运算;
  • Batch Layer执行的是批量处理,例如Hadoop或者Spark支持的Map-Reduce方式;
    在这里插入图片描述
    2)、速度层(Speed Layer)
  • 从对数据的处理来看,speed layer与batch layer非常相似,它们之间最大的区别是前者只处理最近的数据,后者则要处理所有的数据;
  • 为了满足最小的延迟,speed layer并不会在同一时间读取所有的新数据,相反,它会在接收到新数据时,更新realtime view,而不会像batch layer那样重新运算整个view;
  • speed layer是一种增量的计算,而非重新运算(recomputation);
  • Speed Layer的作用包括:对更新到serving layer带来的高延迟的一种补充、快速、增量的算法和最终Batch Layer会覆盖speed layer。
    在这里插入图片描述
    3)、服务层(Serving Layer)
  • 服务层负责建立索引和呈现视图,以便于它们可以被非常好被查询到;
  • Batch Layer通过对master dataset执行查询获得了batch view,而Serving Layer就要负责对batch view进行操作,从而为最终的实时查询提供支撑;
  • 职责包含:对batch view的随机访问和更新batch view;
    在这里插入图片描述
    总结下来,Lambda架构就是如下的三个等式:

批处理视图:batch view = function(all data)
实时处理视图:realtime view = function(realtime view, new data)
查询视图:query = function(batch view . realtime view)

整个Lambda架构如下图所示:
在这里插入图片描述
下图给出了Lambda架构中各个层常用的组件:

  • 数据流存储可选用基于不可变日志的分布式消息系统Kafka;
  • Batch Layer数据集的存储可选用Hadoop的HDFS,或者是阿里云的ODPS;Batch View的预计算可以选用MapReduce或Spark;
  • Batch View自身结果数据的存储可使用MySQL(查询少量的最近结果数据),或HBase(查询大量的历史结果数据)。
  • Speed Layer增量数据的处理可选用Storm或Spark Streaming或Flink或StructuredStreaming;
  • Realtime View增量结果数据集为了满足实时更新的效率,可选用Redis等内存NoSQL。
    在这里插入图片描述

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

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

相关文章

Linux--TCP编程--0216 17

观前提示:本篇博文的一些接口需要前几篇博文实现的 线程池的实现Liunx--线程池的实现--0208 09_Gosolo!的博客-CSDN博客 线程池的单例模式Linux--线程安全的单例模式--自旋锁--0211_Gosolo!的博客-CSDN博客 1.TCP编程需要用的接口 创建 sock…

【数据挖掘】EDA——以2022雪浪算力开发者大赛数据为例

作者简介:重庆大学22级研一,研究方向:时空数据挖掘、图神经网络。目前正在学习大数据、数据挖掘等相关知识,希望毕业后能找到数据相关岗位。 前言 之前写了一个比赛复盘(【竞赛复盘】2022雪浪算力开发者大赛——阀体异…

Python脚本之准备测试环境的用户数据

本文为博主原创,未经授权,严禁转载及使用。 本文链接:https://blog.csdn.net/zyooooxie/article/details/127645678 这期是讲述下 我准备测试环境用户数据的经历。 【实际这篇博客推迟发布N个月】 个人博客:https://blog.csdn.…

【读书笔记】《深入浅出数据分析》第三章 寻找最大值

目录 一,Excel却是最基础、最高频、最有机会展示的一款数据分析工具二,作为数据工作者,实际工作中,不管用不用的上,至少到达会的水准1,常用函数2,透视表3,可视化4,数据分…

【RabbitMQ笔记04】消息队列RabbitMQ七种模式之发布订阅模式(Publish/Subscribe)

这篇文章,主要介绍消息队列RabbitMQ七种模式之发布订阅模式(Publish/Subscribe)。 目录 一、发布订阅模式 1.1、Exchange交换机 (1)什么是Exchange交换机呢??? (2&am…

数据结构与算法----问答2023

1、什么是哈希表?如何解决碰撞? 哈希表(Hash Table),也称为散列表,是一种用于实现字典(键值对)数据结构的数据结构。它将键映射到哈希表中的一个索引(桶)来保…

从零开始学习iftop流量监控(找出服务器耗费流量最多的ip和端口)

一、iftop是什么iftop是类似于top的实时流量监控工具。作用&#xff1a;监控网卡的实时流量&#xff08;可以指定网段&#xff09;、反向解析IP、显示端口信息等官网&#xff1a;http://www.ex-parrot.com/~pdw/iftop/二、界面说明>代表发送数据&#xff0c;< 代表接收数…

DHCP服务器的使用以及可能出现的问题(图文详细版)

DHCP服务的使用 开始&#xff0d;管理工具&#xff0d;DHCP,打开DHCP服务器选项窗口 新建作用域 在此处输入名称和描述,单击下一步 随机确定一组IP地址的范围,并指定其子网掩码 , 单击下一步 若想要排除某一个/组特定的IP地址,我们可以在此界面输入该IP地址,若没有,则可…

CTFHub | 前端验证

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习&#xff0c;实训平台。提供优质的赛事及学习服务&#xff0c;拥有完善的题目环境及配套 writeup &#xff0c;降低 CTF 学习入门门槛&#xff0c;快速帮助选手成长&#xff0c;跟随主流比赛潮流。 0x01 题目描述…

django项目部署(腾讯云服务器centos)

基本步骤&#xff1a; 购买腾讯云服务器并配配置好 >> 本地项目依赖收集准备 >> 上传项目等文件到服务器 >> 服务器安装部署软件和python环境 >> 开始部署&#xff08;全局来看就这5个步骤&#xff09; 目录 目录 1. 购买腾讯云服务器并配配置好 …

【算法设计技巧】分治算法

分治算法 用于设计算法的另一种常用技巧为分治算法(divide and conquer)。分治算法由两部分组成&#xff1a; 分(divide)&#xff1a;递归解决较小的问题(当然&#xff0c;基准情况除外)治(conquer)&#xff1a;然后&#xff0c;从子问题的解构建原问题的解。 传统上&#x…

升级日记本-课后程序(JAVA基础案例教程-黑马程序员编著-第七章-课后作业)

【实验7-4】 升级版日记本 【任务介绍】 1.任务描述 本案例要求编写一个模拟日记本的程序&#xff0c;通过在控制台输入指令&#xff0c;实现在本地新建日记本、打开日记本和修改日记本等功能。 用户输入指令1代表“新建日记本”&#xff0c;可以从控制台获取用户输入的日记…

物联网MQTT协议简单介绍

物联网曾被认为是继计算机、互联网之后&#xff0c;信息技术行业的第三次浪潮。随着基础通讯设施的不断完善&#xff0c;尤其是 5G 的出现&#xff0c;进一步降低了万物互联的门槛和成本。物联网本身也是 AI 和区块链应用很好的落地场景之一&#xff0c;各大云服务商也在纷纷上…

mysql8.0-日志

目录 错误日志 错误日志主要记录如下几种日志&#xff1a; 查询日志 测试 慢查询日志 二进制日志 日志格式 日志查看 修改日志格式 二进制日志的删除 二进制日志的还原 错误日志 错误日志是MySQL中最重要的日志之一&#xff0c;它记录了当mysql启动和停止时&#xff0c;…

【Python基础】类

面向对象编程 面向对象编程是最有效的软件编写方法之一。面向对象是一种对现实世界理解和抽象的方法&#xff0c;是计算机编程技术发展到一定阶段后的产物。 面向对象和面向过程的区别 比如我想吃西红柿炒蛋&#xff0c;怎么运用面向过程的方法来解决这个问题呢&#xff1f;…

怕上当?来看这份网络钓鱼和诈骗技术趋势

网络钓鱼和诈骗&#xff1a;当前的欺诈类型 网络钓鱼 钓鱼者可以攻击任何在线服务——银行、社交网络、政府门户网站、在线商店、邮件服务、快递公司等——中的证书。但是&#xff0c;顶级品牌的客户往往面临更大风险&#xff0c;因为相比小品牌&#xff0c;人们更喜欢使用和…

12 个适合做外包项目的开源后台管理系统

1.D2admin 开源地址&#xff1a;https://github.com/d2-projects/d2-admin 文档地址&#xff1a;https://d2.pub/zh/doc/d2-admin/ 效果预览&#xff1a;https://d2.pub/d2-admin/preview/#/index 开源协议&#xff1a;MIT 2.vue-element-admin 开源地址&#xff1a;https…

BACnet协议详解————MS/TP物理层,数据链路层和网络层

文章目录写在前面1 物理层2 数据链路层MSTP的流程如下noteMS/TP帧格式3 网络层写在前面 这周加更一篇&#xff0c;来弥补一下之前落下的进度。简单的说两句&#xff0c;之前讲应用层的时候&#xff0c;只是跟官方的手册来同步一下&#xff0c;但是从个人理解来说&#xff0c;自…

Spring拦截器

SpringMVC提供了拦截器机制&#xff0c;允许运行目标方法之前进行一些拦截工作或者目标方法运行之后进行一下其他相关的处理。自定义的拦截器必须实现HandlerInterceptor接口。preHandle()&#xff1a;这个方法在业务处理器处理请求之前被调用&#xff0c;在该方法中对用户请求…

(周末公众号解读系列)2000字-视觉SLAM综述

参考链接&#xff1a;https://mp.weixin.qq.com/s?__bizMzg2NzUxNTU1OA&mid2247528395&idx1&sn6c9290dd7fd926f11cbaca312fbe99a2&chksmceb84202f9cfcb1410353c805b122e8df2e2b79bd4031ddc5d8678f8b11c356a25f55f488907&scene126&sessionid1677323905…