【软考】下篇 第19章 大数据架构设计理论与实践

news2024/11/18 16:35:13

目录

    • 大数据处理系统架构特征
    • Lambda架构
      • Lambda架构介绍
      • Lambda架构实现
      • Lambda架构优缺点
      • Lambda架构与其他架构模式对比
    • Kappa架构
      • Kappa架构介绍
      • Kappa架构实现
      • Kappa架构优缺点
    • 常见Kappa架构变形(Kappa+、混合分析系统)
      • Kappa+架构
      • 混合分析系统的Kappa架构
    • Lambda与Kappa架构对比
    • Lambda与Kappa架构选型
    • 案例分析
    • 术语

大数据处理系统架构特征

鲁棒性和容错性
低延迟读取和更新能力
横向扩容
通用性
延展性
即席查询能力
最少维护能力
可调试性

Lambda架构

Lambda架构由 Storm 的作者 Nathan Marz提出,
其设计目的在于提供一个能满足大数据系统关键特性的架构,包括高容错、低延迟、可扩展等。
其整合 离线计算实时计算,融合不可变性、读写分离和复杂性隔离等原则,
可集成 Hadoop、Kafka、Spark、Storm等各类大数据组件。
Lambda 是用于同时处理 离线 和 实时数据的,可容错的,可扩展的分布式系统。
它具备强鲁棒性,提供低延迟和持续更新。

Lambda架构介绍

在这里插入图片描述

  • (1) 批处理层 (Batch Layer): 存储数据集, Batch Layer在数据集上预先计算查询函数,并构建查询所对应的 View。Batch Layer可以很好地处理离线数据,但有很多场景数据是不断实时生成且需要实时查询处理,对于这种情况, Speed Layer更为适合。
  • (2) 加速层 (Speed Layer): Batch Layer处理的是全体数据集,而 Speed Layer处理的是最近的增量数据流。 Speed Layer 为了效率,在接收到新的数据后会不断更新 Real-time View, 而Batch Layer 是根据全体离线数据集直接得到 Batch View。
  • (3) 服务层 (Serving Layer): Serving Layer 用于合并Batch View 和 Real-time View中的结果数据集到最终数据集。

Lambda架构实现

在这里插入图片描述
在这种Lambda架构实现中,
Hadoop (HDFS) 用于存储主数据集,
Spark(或Storm) 可构成速度层 (Speed Layer),
HBase ( 或 Cassandra) 作为服务层,由Hive创建可查询的视图。

Lambda架构优缺点

优点

  • (1) 容错性好。 Lambda 架构为大数据系统提供了更友好的容错能力,一旦发生错误,我们可以修复算法或从头开始重新计算视图。
  • (2) 查询灵活度高。批处理层允许针对任何数据进行临时查询。
  • (3) 易伸缩。所有的批处理层、加速层和服务层都很容易扩展。因为它们都是完全分布式的系统,我们可以通过增加新机器来轻松地扩大规模。
  • (4) 易扩展。添加视图是容易的,只是给主数据集添加几个新的函数。

缺点

  • (1) 全场景覆盖带来的编码开销。
  • (2) 针对具体场景重新离线训练一遍益处不大。
  • (3) 重新部署和迁移成本很高。

Lambda架构与其他架构模式对比

  • 事件溯源 - 数据集的存储:存储所有数据,支持根据历史数据 重新计算 恢复正确状态(容错性)
  • CQRS - 读写分离,通过流、批处理进行写,通过view进行读

Kappa架构

数据系统=数据+查询
数据的特性:When(时间点)、What(不可变、CRUD变成CR添加和读取)
数据的存储:数据不可变、存储所有数据

Kappa架构介绍

Kappa架构由 Jay Kreps提出,不同于Lambda 同时计算流计算和批计算并合并视图,
Kappa只会通过 流计算 一条的数据链路计算并产生视图。
Kappa 同样采用了重新处理事件的原则,对于历史数据分析类的需求, Kappa要求数据的长期存储能够以有序日志流的方式重新流入流计算引擎,重新产生历史数据的视图。
本质上是通过改进 Lambda架构中的 Speed Layer, 使它既能够进行实时数据处理,同时也有能力在业务逻辑更新的情况下重新处理以前处理过的历史数据。
在这里插入图片描述

Kappa架构实现

实时数据处理
历史数据处理
将log offset设置为0,
启动新实例从头处理历史数据
新数据视图处理过的数据
已经赶上了旧视图
Kafka
根据历史数据区间
设置数据日志保留期
Instance1
流式计算实例
实时视图
Instance2
新的流式计算实例
新视图
切换为新视图

Kappa架构优缺点

优点

  • 在于将实时和离线代码 统一 起来,方便维护而且统一了数据口径的问题,
  • 避免了 Lambda架构中与离线 数据合并 的问题,查询历史数据的时候只需要重放存储的历史数据即可。

缺点

  • (1) 消息中间件缓存的数据量回溯数据性能瓶颈。通常算法需要过去180天的数据,如果都存在消息中间件,无疑有非常大的压力。同时,一次性回溯订正180天级别的数据,对实时计算的资源消耗也非常大。
  • (2) 在实时数据处理时,遇到大量不同的实时流进行关联时,非常依赖实时计算系统的能力,很可能因为数据流先后顺序问题,导致数据丢失。
  • (3) Kappa 在抛弃了离线数据处理模块的时候,同时抛弃了离线计算更加稳定可靠的特点。Lambda 虽然保证了离线计算的稳定性,但双系统的维护成本高且两套代码带来后期运维困难。

对于以上Kappa框架存在的几个问题,目前也存在一些解决方案,

  • 对于消息队列缓存数据性能的问题, Kappa+框架 提出使用HDFS来存储中间数据。
  • 针对 Kappa 框架展示层能力不足的问题,也有人提出了 混合分析系统 的解决方案。

常见Kappa架构变形(Kappa+、混合分析系统)

Kappa+架构

Kappa+是 Uber提出流式数据处理架构,
它的核心思想是让流计算框架 直接读 HDFS里的数据仓库数据
一并实现实时计算和历史数据 backfll 计算,不需要为 backfll 作业长期保存日志或者把数据拷贝回消息队列。

Kappa+ 将数据任务分为 无状态任务时间窗口任务

Uber开发了 Apache hudi 框架 来存储数据仓库数据,
hudi 支持更新、删除已有parquet数据,
也支持增量消费数据更新部分,
从而系统性解决了问题2存储的问题。

图19-11是完整的Uber大数据处理平台,其中Hadoop→ Spark →用户查询 的流程涵盖了Kappa+数据处理架构。

将不同来源的数据通过 Kafka 导入到Hadoop 中,
通过HDFS来存储中间数据,
再通过 spark对数据进行分析处理,
最后交由上层业务进行查询。

在这里插入图片描述

混合分析系统的Kappa架构

Lambda和 Kappa架构都还有展示层的困难点,结果视图如何支持热点数据查询分析,
一个解决方案是在 Kappa基础上衍生数据分析流程

如图19-12所示,在基于使用 Kafka +Flink 构 建 Kappa 流计算数据架构, 针对Kappa架构分析能力不足的问题,
再利用 Kafka对接组合 Elastic-Search 实时分析引擎,部分弥补其数据分析能力。
但是 ElasticSearch 也只适合对合理数源数量级的热点数据进行索引,无法覆盖所有批处理相关的分析需求,
这种混合架构某种意义上属于 Kappa和 Lambda间的折中方案。
在这里插入图片描述

Lambda与Kappa架构对比

在这里插入图片描述

Lambda架构

  • 批处理:Hadoop -> Hbase
  • 流处理:Spark、Storm -> Redis

Kappa架构

  • Kafka作为消息中间件,将数据保持在消息队列中
  • 流式计算:Flink,其作为新兴的流处理框架,以数据并行和流水线方式执行任意流数据程序,且同时支持批处理和流处理。
SparkFlink
微批处理流处理(无界流)
批处理有界流

Lambda与Kappa架构选型

考虑因素详细说明
业务需求

技术需求
- 用户需要根据自己的业务需求来选择架构,
- 如果业务对于 Hadoop、Spark、Strom 等关键技术有强制性依赖,选择 Lambda 架构可能较为合适;
- 如果处理数据偏好于流式计算,又依赖Flink 计算引擎,那么选择 Kappa架构可能更为合适。
复杂度- 频繁修改, Lambda 架构需要反复修改两套代码,则显然不如 Kappa架构简单方便。
- 同时支持批处理和流式计算,或者希望用一份代码进行数据处理,那么可以选择Kappa 架构。
- 实时处理和离线处理的结果不能统一,比如某些机器学习的预测模型,需要先通过离线批处理得到训练模型,再交由实时流式处理进行验证测试,那么这种情况下,批处理层和流处理层不能进行合并,因此应该选择Lambda架构。
开发维护成本- Lambda架构需要有一定程度的开发维护成本,包括两套系统的开发、部署、测试、维护,适合有足够经济、技术和人力资源的开发者。
- 而Kappa 架构只需要维护一套系统,适合不希望在开发维护上投入过多成本的开发者。
历史数据处理能力- 频繁接触海量数据集进行分析,比如过往十年内的地区降水数据等,这种数据适合批处理系统进行分析,应该选择Lambda架构。
- 如果始终使用小规模数据集,流处理系统完全可以使用,则应该选择 Kappa架构。

案例分析

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

术语

即席查询(Ad Hoc)
即席查询(Ad Hoc)是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的。

AD-HOC :以单独的SQL语句的形式执行的查询就是即席查询,比如说:在C#程序里嵌入的SQL语句,或者在SSMS里的新建查询窗口自己键入的SQL代码就是即席查询。

而将SQL代码放入存储过程里面,以存储过程或者函数或者触发器来执行的查询就不是即席查询,即席:当场,就是当场去查询。

即席查询是指那些用户在使用系统时,根据自己当时的需求定义的查询。即席查询生成的方式很多,最常见的就是使用即席查询工具。一般的数据展现工具都会提供即席查询的功能。通常的方式是,将数据仓库中的维度表和事实表映射到语义层,用户可以通过语义层选择表,建立表间的关联,最终生成SQL语句。即席查询与通常查询从SQL语句上来说,并没有本质的差别。它们之间的差别在于,通常的查询在系统设计和实施时是已知的,所有我们可以在系统实施时通过建立索引、分区等技术来优化这些查询,使这些查询的效率很高。而即席查询是用户在使用时临时生产的,是一种松散类型的命令/查询,其值取决于某个变量,每次执行命令时,结果都不同,这取决于变量的值。它不能预先确定,通常属于动态编程SQL查询。临时查询是短期的,并且是在运行时创建的。系统无法预先优化这些查询,所以即席查询也是评估数据仓库的一个重要指标。

即席查询的位置通常是在关系型的数据仓库中,即在EDW或者ROLAP中。多维数据库有自己的存储方式,对即席查询和通常查询没有区别。在一个数据仓库系统中,即席查询使用的越多,对数据仓库的要求就越高,对数据模型的对称性的要求也越高。对称性的数据模型对所有的查询都是相同的,这也是维度建模的一个优点。

资料来源:
Ad Hoc Query https://www.techopedia.com/definition/30581/ad-hoc-query-sql-programming
What is an Ad Hoc Query? https://www.wisegeek.com/what-is-an-ad-hoc-query.htm

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

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

相关文章

快消终端门店真实性新玩法:全流程校验+多元认证多重保障

在某饮品企业会议室,气氛凝重。城市经理一脸严肃地扫视着团队成员,小李、小张和小陈等人在这锐利的目光下显得有些局促不安。 城市经理沉声开口:小李上报的“幸福超市”’新店在XX大街上并不存在。这是怎么回事? 小李支吾着回答…

番外篇 | YOLOv8改进之更换主干网络MobileNetv3 + 添加CA注意力机制

前言:Hello大家好,我是小哥谈。MobileNetv3是一种轻量级网络,采用了深度可分离卷积等轻量化技术,具有较小的模型参数量和计算复杂度,适合在计算能力较弱的设备上运行。本节课就让我们结合论文来对YOLOv8进行组合改进(更换主干网络MobileNetv3 + 添加CA注意力机制),希望…

c++(五)

c&#xff08;五&#xff09; 继承基类和派生类继承的格式继承的方式三种:public、private、protected 继承的规则多层继承多重继承 类与类的关系 继承 一个新类从已有的类那里获得其已有特性(属性、行为)&#xff0c;这种现象称为类的继承 基类和派生类 <1>从已有的类…

linux开发之设备树基本语法二

设备树特殊节点,对节点定义别名,chosen节点用来uboot给内核传参 上面的mmc0就是sdmmc0节点的别名 device_type属性 只对cpu节点和memory节点进行描述 自定义属性 这部分自定义,比如定义管脚标号,初始数值等 为什么我们可以在设备树上自己定义属性呢?设备树文件描述的是硬…

SQL数据分析常用函数

SQL 中有许多常用的函数&#xff0c;可以用于处理和操作数据。以下是一些常见的SQL 函数&#xff1a; 1. 字符串函数&#xff1a; CONCAT(str1, str2, …): 用于把多个文本字符串合并成一个长字符串(参数中有null时返回null)。 select concat(一起,学, SQL); -- 输出结果:一…

Golang | Leetcode Golang题解之第102题二叉树的层序遍历

题目&#xff1a; 题解&#xff1a; func levelOrder(root *TreeNode) [][]int {ret : [][]int{}if root nil {return ret}q : []*TreeNode{root}for i : 0; len(q) > 0; i {ret append(ret, []int{})p : []*TreeNode{}for j : 0; j < len(q); j {node : q[j]ret[i] …

P7-P9【分配器】【源文件】【OOPvs.GP】

分配器 如何分配&#xff0c;如何释放 源文件 标准库源代码文件VC布局 标准库源代码文件GCC布局 OOP(面向对象编程) VS GP(泛型编程) 这两种编程的区别&#xff1a; 面向对象编程是将数据和方法联系在一起&#xff0c;更注重对不同的对象做出不同的响应&#xff0c;更适合…

关于NLTK

一、NLTK简介 下图来自NLTK官网&#xff1a;https://www.nltk.org/index.html NLTK&#xff0c;全称为Natural Language Toolkit&#xff0c;是一个用于处理和分析自然语言文本的Python库。它提供了一系列丰富的工具和资源&#xff0c;包括词汇资源&#xff08;如WordNet&am…

电脑无法远程桌面连接,关于电脑无法建立远程桌面连接的问题分析与解决方案

在信息化快速发展的今天&#xff0c;远程桌面连接已成为许多企业和个人用户进行远程办公、技术支持以及数据管理的必备工具。然而&#xff0c;当电脑无法建立远程桌面连接时&#xff0c;可能会对用户的工作和日常生活造成极大的不便。本文将深入分析电脑无法远程桌面连接的原因…

探索超构光子学与人工智能相结合的下一代研究趋势

欢迎关注GZH《光场视觉》 一个研究小组在《固体与材料科学当前观点》&#xff08;Current Opinion in Solid State and Materials Science&#xff09;杂志上发表了一篇论文&#xff0c;强调了将超构 光子学研究与人工智能相结合的下一代研究趋势。超透镜引发了光学领域的一场…

Flink系列一:flink光速入门 (^_^)

引入 spark和flink的区别&#xff1a;在上一个spark专栏中我们了解了spark对数据的处理方式&#xff0c;在 Spark 生态体系中&#xff0c;对于批处理和流处理采用了不同的技术框架&#xff0c;批处理由 Spark-core,SparkSQL 实现&#xff0c;流处理由 Spark Streaming 实现&am…

LeetCode/NowCoder-链表经典算法OJ练习4

人的才华就如海绵的水&#xff0c;没有外力的挤压&#xff0c;它是绝对流不出来的。流出来后&#xff0c;海绵才能吸收新的源泉。&#x1f493;&#x1f493;&#x1f493; 目录 说在前面 题目一&#xff1a;环形链表 题目二&#xff1a;环形链表 II 题目三&#xff1a;随机…

json web token及JWT学习与探索

JSON Web Token&#xff08;缩写 JWT&#xff09;是目前最流行的跨域认证解决方案 作用&#xff1a; 主要是做鉴权用的登录之后存储用户信息 生成得token(令牌)如下 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiaWF0IjoxNjg3Njc0NDkyLCJleHAiOjE2ODc3NjA4OTJ9.Y6eFG…

视创云展「VR直播」是什么?有哪些功能和应用场景?

视创云展「VR直播」通过“3D沉浸式展厅直播高互动感”的创新玩法&#xff0c;使企业随时随地举办一场低成本、高互动、能获客的元宇宙直播活动成为可能。「VR直播」能实现3D展厅内VR场景漫游&#xff0c;更结合音视频交互、同屏互动等新功能&#xff0c;为用户带来更沉浸的虚拟…

OpenStack创建云主机——超级详细步骤

四、创建云主机 一台云主机成功创建或启动需要依赖OpenStack中的各种虚拟资源&#xff0c;如CPU、内存、硬盘等。如果需要云主机丽娜姐外部网络&#xff0c;还需要网络、路由器等资源。如果需要外部网络访问云主机&#xff0c;那么还需要配置浮动IP。因此&#xff0c;在创建云主…

HiWoo Box工业网关

在科技飞速发展的今天&#xff0c;工业领域正迎来智能化变革。在这场变革中&#xff0c;工业网关作为连接工业设备与远程控制中心的桥梁&#xff0c;发挥着至关重要的作用。HiWoo Box网关凭借其卓越的性能和广泛的应用场景&#xff0c;为工业领域带来了全新的智慧化解决方案。 …

华为WLAN实验继续-2,多个AP如何部署

----------------------------------------如果添加新的AP&#xff0c;如何实现多AP的服务----------- 新增加一个AP2启动之后发现无法获得IP地址 在AP2上查看其MAC地址&#xff0c;并与将其加入到AC中去 打开AC&#xff0c;将AP2的MAC加入到AC中 sys Enter system view, re…

常见开源蜜罐系统

蜜罐系统&#xff08;Honeypot&#xff09;在信息安全领域中是一种被广泛使用的技术&#xff0c;旨在吸引和诱导黑客入侵&#xff0c;从而获取和分析攻击者的行为和手段。以下是一些常见的蜜罐系统的介绍&#xff1a; HFish开源蜜罐系统 特点&#xff1a; 多功能&#xff1a;支…

[数据集][目标检测]航空发动机缺陷检测数据集VOC+YOLO格式291张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;291 标注数量(xml文件个数)&#xff1a;291 标注数量(txt文件个数)&#xff1a;291 标注类别…

Java 使用WebMagic爬取网页(简单示例)

框架简介 WebMagic是一个基于Java的开源网络爬虫框架&#xff0c;它提供了很多简单易用的API接口&#xff0c;可以帮助使用者快速构建出高效、可扩展的网络爬虫程序&#xff0c;WebMagic由四个组件(Downloader、PageProcessor、Scheduler、Pipeline)构成&#xff0c;核心代码非…