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

目录

    • 大数据处理系统架构特征
    • 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数组长度属性的安排与深度学习中的数据类型探索

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、数组长度属性的理解与应用 1. 数组形状信息的获取 2. 数组形状的变换 3. 数组类型的指…

关于本人VIP付费文章说明

郑重声明:我写博客只是为了记录分享经验 自从上次写完数据结构系列后我就一直没有登陆,目前也没打算继续开新内容。今天偶然发现我之前写的文章被设为vip文章,要vip解锁才能看,我很确定当初我发布的时候选择的是公开,…

SpirngMVC框架学习笔记(一):SpringMVC基本介绍

1 SpringMVC 特点&概述 SpringMVC 从易用性,效率上 比曾经流行的 Struts2 更好 SpringMVC 是 WEB 层框架,接管了 Web 层组件, 比如控制器, 视图, 视图解析, 返回给用户的数据格式, 同时支持 MVC 的开发模式/开发架构SpringMVC 通过注解,…

【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路

目录 一、污点(Taint) 1.1污点介绍 1.2污点的组成格式 1.3当前 taint effect 支持如下三个选项: 1.4污点的增删改查 1.4.1验证污点的作用——NoExecute 1.4.2验证污点的作用——NoSchedule 1.4.3 验证污点的作用——PreferNoSchedule 1.5污点的配置与管理…

单链表的相关题目

1.删除链表中给定值val的所有结点 public void removeall(int key) {//由于是删除链表中所有和key值相同的结点,所以可以设置两个ListNode类型的数据,一个在前面,一个在后面.//直到前面的走到链表的最后,这样完成了遍历.//先判断一下这个链表是否为空if(headnull){System.out.…

脑图工具 在学习系统架构中的使用

系统,有人把它比作一个黑盒,有人比作一个树洞。呃,其实二者都隐含的表达了一个意思,盘根错节,一言难尽,欲说还休,说了又像是隔靴搔痒,感觉没说透。 学习,理解和展示一个…

边缘计算网关的用途及其使用方法-天拓四方

在数字化日益深入的今天,边缘计算网关作为一种重要的设备,正在越来越多地被应用于各种场景中。它不仅能够提升数据处理的速度和效率,还能在降低网络延迟的同时确保数据的安全性。本文将详细介绍边缘计算网关的用途及其使用方法,帮…

MFC里的工具栏按钮图标如何使用外部图片?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

Revit——(2)模型的编辑、轴网和标高

目录 一、关闭缩小的隐藏窗口 二、标高(可创建平面,其他标高线复制即可) 三、轴网 周围的四个圈和三角表示四个里面,可以移动,不要删除 一、关闭缩小的隐藏窗口 二、标高(可创建平面,其他标…

[书生·浦语大模型实战营]——在茴香豆 Web 版中创建自己领域的知识问答助手

茴香豆是一个基于LLM的领域知识助手,可以用于解答群聊中的问题。接下来是创建过程。 1.打开茴香豆Web版,创建自己的领域库。 地址:茴香豆Web版 这里类似于注册账号,你输入知识库的名称以及密码,然后它就会创建一个知识…

Collection(一)[集合体系]

说明&#xff1a;Collection代表单列集合&#xff0c;每个元素&#xff08;数据&#xff09;只包含一个值。 Collection集合体系&#xff1a; Collection<E> 接口 (一&#xff09;List<E> 接口 说明&#xff1a;添加的元素是有序、可重复、有索引。 1. ArrayLi…

Ai终点站,全系统商业闭环矩阵打造,帮电商、实体降70%成本,12款Ai联合深度实战

说白了&#xff0c;你之前5个人的团队&#xff0c;当团队人数不变的情况下&#xff0c;借助于ChatGPT和各种软件的结合&#xff0c;赋能电商直播带货&#xff0c;可以让之前一年销售额2.000万变成2.500万或者是3.000万&#xff0c;这就是这套课程的核心作用: 【1】系统课程从1…

SpringCloud之SSO单点登录-基于Gateway和OAuth2的跨系统统一认证和鉴权详解

单点登录&#xff08;SSO&#xff09;是一种身份验证过程&#xff0c;允许用户通过一次登录访问多个系统。本文将深入解析单点登录的原理&#xff0c;并详细介绍如何在Spring Cloud环境中实现单点登录。通过具体的架构图和代码示例&#xff0c;我们将展示SSO的工作机制和优势&a…

Excel单元格格式无法修改的原因与解决方法

Excel单元格格式无法更改可能由多种原因造成。以下是一些可能的原因及相应的解决方法&#xff1a; 单元格或工作表被保护&#xff1a; 如果单元格或工作表被设置为只读或保护状态&#xff0c;您将无法更改其中的格式。解决方法&#xff1a;取消单元格或工作表的保护。在Excel中…

【接口测试_04课_Jsonpath断言、接口关联及加密处理】

一、Jasonpath的应用 JsonPath工具网站&#xff1a;JSONPath解析器 - 一个工具箱 - 好用的在线工具都在这里&#xff01; 1、JSONPath的手写与获取 手写JSONPath 1、 $ &#xff08;英文美元符号&#xff09;代表外层的{} . &#xff08;英文句号&#xff09;表示当前…

分频器对相位噪声影响

本文我们将分析输入时钟被N分频之后的输出时钟的相位噪声如何变化。首先理想分频器的意思是我们假设分频器不会引入附加相位噪声&#xff0c;并且输入和输出时钟之间没有延时。我们假设每一个输出边沿的位置都完美的与输入边沿相对齐&#xff0c;这样便于分析。由于每N个输入时…

Java内存空间

Java内存空间划分 Java虚拟机在执行Java程序的过程中会把他管理的内存划分为若干个不同的数据区域&#xff0c;如图所示1.7和1.8两个版本的Java内存空间划分。 JDK1.7: JDK1.8: 线程私有&#xff1a; 程序计数器虚拟机栈本地方法栈 线程共享 &#xff1a; 堆方法区直接内…

Android项目实战 —— 手把手教你实现一款本地音乐播放器Dora Music

今天带大家实现一款基于Dora SDK的Android本地音乐播放器app&#xff0c;本项目也作为Dora SDK的实践项目或使用教程。使用到开源库有[https://github.com/dora4/dora] 、[https://github.com/dora4/dcache-android] 等。先声明一点&#xff0c;本项目主要作为框架的使用教程&a…

SALOME源码分析:MDF框架

SALOME是由EDF、CEA、Open CASCADE等联合开发的开源CAE集成平台。 作为一款开源CAE软件集成平台&#xff0c;SALOME以其现代化的架构设计、良好的扩展性&#xff0c;提供了几何建模、网格生成、数据同化、求解器调用、后处理可视化、流程管理、作业管理等方面的支持。而这一切…

【源码】6语言跨境电商PHP源码 精美UI+功能强大开源无授权

6语言跨境电商PHP源码 精美UI功能强大开源无授权 英文&#xff0c;简体中文&#xff0c;繁体中文&#xff0c;日语、泰语、越南语6语言。功能非常强大&#xff0c;UI也很漂亮的跨境电商源码。基于国外成熟电商系统二开的源码&#xff0c;带POS系统。 系统采用Laravel框架开发…