JMU软件20 大数据技术复习(只写了对比18提纲的变动部分)

news2024/11/6 7:14:21

原博主 博客主页:https://xiaojujiang.blog.csdn.net/
原博客链接:https://blog.csdn.net/qq_43058685/article/details/117883940

本复习提纲只适用于JMU软件工程大数据课程(ckm授课)
具体内容参考老师提纲的考纲,18和20级的考纲就有部分变动
(老师还考了spark的运行流程还是运行原理来着,就这一题出考纲了,其他都在考纲范围内)

文章目录

  • 第一章
  • 第三章
    • 3.6 数据存放策略和原因P51
      • (新增)冗余复制因子为3时的数据存放策略
  • 第四章
      • (新增)4.2.3 HBASE概念视图与物理视图的不同,举例说明
    • 4.5 (修改)HBASE的系统结构与客户端、Zookeeper服务器、Master服务器、Region服务器功能P74-75
    • 4.6 (补充)RegionServer,Region
  • 第五章
    • 5.2 (纠错)关系型数据库不满足Web2.0应用的三大原因 P96
    • 5.3(新增)NoSQL数据库与关系型数据库比较(优势与劣势)P97
  • 第七章
    • 7.1 (新增)MapReduce与Hadoop的关系 P134
    • 7.4 (新增)什么是“计算向数据靠拢”?为什么采用这一思想?
  • 第九章
    • (补充)9.1 Hadoop的缺陷与Spark的优点,优点的实现方式P174
    • 9.2 Spark生态系统的组件与其功能 P176
    • 9.3 (补充)RDD与DAG的基本概念 P180
    • 9.4 (新增)RDD转换操作与行动操作的区别 P180
    • 9.4 (补充)RDD哪些操作属于转换操作,哪些操作属于行动操作(常用API表)
    • (新增)9.5 RDD惰性调用与DAG的构建
    • (新增)9.6 Spark宽依赖与窄依赖的定义,DAG阶段的划分
      • 9.6.1 Spark宽依赖与窄依赖的定义
      • 9.6.2 DAG阶段的划分
  • 第十章
      • (补充)10.5.3 Spark和Spark Streaming的差别

第一章

无变化

第三章

3.6 数据存放策略和原因P51

(新增)冗余复制因子为3时的数据存放策略

主要记住这个,策略了原因了解一下就行。

HDFS默认的冗余复制因子是3,每一个文件块会被同时保存到3个地方,其中,有两副本放在同一个机架的不同机器上,第三个副本放在不同机架的机器上,这样既可以保证机架发生异常时的数据恢复,也可以提高数据读写性能

第四章

(新增)4.2.3 HBASE概念视图与物理视图的不同,举例说明

在HBASE的概念视图中,一个表可以视为一个稀疏,多维的映射关系每个行都包含相同的列族,尽管行不需要在每个列族里存储数据。比如下图,是一个存储网页的HBASE表,行键是一个反向URL,有列族contents和anchor,前两行列族contents的内容为空,后三行列族anchor为空。HBASE表是一个稀疏的映射关系,即存在很多空的单元格
在这里插入图片描述
在概念视图层面,HBASE中每个表是由许多行组成的,但是在物理存储层面,它采用了基于列的存储方式,而不是像传统关系数据库那样采用基于行的存储方式,比如上图的HBASE表会按照contents和anchor两个列族分别存放,属于同一个列族的数据保存在一起,同时,和每个列族一起存放的还包括行键和时间戳
在这里插入图片描述
在表 4-4 的概念视图中,我们可以看到,有些列是空的,即这些列上面不存在值。在物理视图中,这些空的列不会被存储成 null,而是根本就不会被存储,当请求这些空白的单元格的时候会返回 null 值

4.5 (修改)HBASE的系统结构与客户端、Zookeeper服务器、Master服务器、Region服务器功能P74-75

在这里插入图片描述

在这里插入图片描述

  • HBASE一般采用HDFS作为底层数据存储

  • 客户端
    客户端包含访问HBase的接口,同时缓存中维护着已经访问过的Region信息,用来加快后续数据访问过程。

  • Region服务器/Region Server
    Region Server 为 Region 的管理者,其实现类为 HRegionServer,负责维护分配给自己的Region,并响应用户的读写请求。主要作用如下:

    • 维护master分配给他的region,处理对这些region的IO请求
    • 负责切分正在运行过程中变的过大的region
  • Master

    一个HBase集群存在多个HMaster节点,每时每刻只有一个hmaster在运行。主要作用如下:

    • 维护表和region的元数据,而不参与数据的输入/输出过程,hmaster失效仅仅会导致所有的元数据无法被修改,但表的数据读/写还是可以正常进行的。
    • 对于 RegionServer的操作:分配 regions到RegionServer,监控每个 RegionServer的状态,负载均衡和故障转移
    • client访问hbase上的数据并不需要master参与(寻址访问zookeeper和region server,数据读写访问region server),master仅仅维护table和region的元数据信息(table的元数据信息保存在zookeeper上),负载很低。

      注意:master上存放的元数据是region的存储位置信息,但是在用户读写数据时,都是先写到region server的WAL日志中(应该就是HLog吧,没去查),之后由region server负责将其刷新到region中。所以,用户并不直接接触region,无需知道region的位置,所以并不需要从master处获得region的元数据,而只需要从zookeeper中获取region server的位置元数据,之后便直接和region server通信。
  • Zookeeper

    • Zookeeper实时监控每个Region Server的状态并通知给Master
    • 保证任意时刻总有一个Master在运行,避免Master的’单点失效问题‘。
    • HBase 通过 Zookeeper 来做 Master 的高可用、RegionServer 的监控、元数据的入口以及集群配置的维护等工作。(辅助Master,减轻Master的负载

推荐看看这个:https://blog.csdn.net/mm_bit/article/details/51304233

总结一下

  • Master记载的是Region和table的元数据。
  • ZooKeeper记载的是Region Server的元数据,读写数据只需要Region Server的元数据。
    • hmaster启动时候会将hbase系统表.ROOT.加载到 zookeeper,根据三层结构zookeeper可以获取所有region server的元数据。

4.6 (补充)RegionServer,Region

在这里插入图片描述

  • 一个Region Server包括多个Region,这些Region共用一个公共的HLog

  • 每个Region按照列族进行存储,一个Store就是代表一个列族;

  • 写数据

    • 写数据首先被写入MemStore和HLog,操作写入HLog后MemStore才会刷写入磁盘
    • 一个Store中的数据不是直接写到底层中去,而是先写到MemStore(缓存)中,缓存满了后再flush到StoreFile磁盘文件中;StoreFile是HBase中的表示形式底层是借助于HDFS中称为HFile的文件存储
  • 读数据

    • 读取数据时, 先访问MemStore缓存,缓存中没找到才去磁盘中的StoreFile寻找
  • 缓存的刷新

    • 系统会周期性地把MemStore缓存里的内容刷写到磁盘的StoreFile文件中,清空缓存,并在Hlog里面写入一个标记;每次刷新都生成一个新的StoreFile文件
    • 每个Region Server都有一个自己的HLog文件,每次启动都检查该文件,确认最近一次执行缓存刷新操作之后是否发生新的写入操作;如果发现更新,则先写入MemStore,再刷写到StoreFile,最后删除旧的Hlog文件,开始为用户提供服务。

第五章

5.2 (纠错)关系型数据库不满足Web2.0应用的三大原因 P96

  • 无法满足海量数据的管理需求。
  • 无法满足数据高并发的需求。
  • 无法满足高可拓展性和高可用性的需求。

5.3(新增)NoSQL数据库与关系型数据库比较(优势与劣势)P97

  • 关系数据库
    • 突出优势在于,以完善的关系代数理论作为基础,有严格的标准,支持事务 ACID 四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持。
    • 其劣势在于,可扩展性较差,无法较好地支持海量数据存储,数据模型过于死板,无法较好地支持 Web 2.0 应用,事务机制影响了系统的整体性能等。
  • NOSOL 数据库
    • 明显优势在于,可以支持超大规模数据存储,灵活的数据模型可以很好地支持 Web 2.0应用,具有强大的横向扩展能力等。
    • 其劣势在于,缺乏数学理论基础,复杂查询性能不高,一般都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等。

记关键词,现编吧:数据库原理,数据规模,数据库模式,查询效率,一致性,数据完整性扩展性,可用性,标准化,技术支持,可维护性。

在这里插入图片描述


## 5.4 (补充)四大类型NOSQL数据库名称与特点P99-101 * 键值数据库 * 优点:扩展性好,灵活性好 ,**大量写操作性能高**。 * 缺点:**无法存储结构化信息,条件查询效率比较低**(准确就是不行,因为数据没有管理)。 * 列族数据库(参考hbase) * 优点:查找速度快,可扩展性强,容易进行分布式扩展,复杂性低。 * 缺点:**功能较少**,大都**不支持强事务一致性**。 * 文档数据库 * 优点:性能好,灵活性高,复杂度低,数据结构灵活,容易迁移,安全。 * 缺点:**缺乏统一的查询语句,查询性能不行,没有事务** * 图数据库 * 优点:灵活性高,**支持复杂的图算法**,可用于构建**复杂的关系图谱**。 * 缺点:**复杂性高,只能支持一定的数据规模**。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/c3a47d95cbf44520bb6a70924744b123.jpeg)

第七章

7.1 (新增)MapReduce与Hadoop的关系 P134

大规模数据集的处理包括分布式存储和分布式计算两个核心环节。Hadoop 使用分布式文件系统HDFS实现分布式数据存储,用 Hadoop MapReduce实现分布式计算。MapReduce的输入输出都需要借助于分布式文件系统进行存储,这些文件被分布存储到集群中的多个节点。

7.4 (新增)什么是“计算向数据靠拢”?为什么采用这一思想?

MapReduce设计的一个理念就是”计算向数据靠拢“:不移动数据,每台计算机之间的数据不交互,而是把计算程序发送给数据。

原因:移动数据需要大量的网络传输开销,尤其在大规模的数据环境下这种开销犹为惊人。移动计算要比移动数据更加经济。

第九章

(补充)9.1 Hadoop的缺陷与Spark的优点,优点的实现方式P174

Hadoop的缺陷:

* 其MapReduce计算模型延迟过高,无法胜任实时,快速计算的需求,因为适用于离线批处理的应用场景。

Spark的优点及其实现方式

  • Spark的计算模式也属于MapReduce,但不限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比MapReduce更灵活
  • Spark提供了内存计算,中间结果直接存放到内存中,带来了更高的迭代运算效率
  • Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制

9.2 Spark生态系统的组件与其功能 P176

  • Spark Core

    Spark Core包含了Spark基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面对批数据处理场景。Spark建立在统一的抽象RDD之上,使其可以以基本一致的方式应对不同的大数据处理场景。

  • Spark SQL

    Spark SQL允许开发人员直接处理RDD,同时也可查询Hive、HBase等外部数据源。Spark SQL的一个重要特点是其能够统一处理关系表和RDD,使得开发人员不需要自己编写Spark应用程序,开发人员可以轻松使用你SQL命令进行查询,并进行更复杂的数据分析。

  • Spark Streaming

    Spark Streaming支持高吞吐量、可容错处理的实时流数据处理,其核心思路是将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用Spark Core进行快速处理。Spark Streaming支持多种数据输入源,如Kafka、Flume和TCP套接字等。

  • MLlib(机器学习)

    MLlib提供了常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发人员只需要具备一定的理论知识就能进行机器学习工作。

  • GraphX(图计算)

    GraphX是Spark中用于图计算的API,可认为是Pregel在Spark上的重写优化,GraphX性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂地图算法。

在这里插入图片描述

9.3 (补充)RDD与DAG的基本概念 P180

理解RDD的话看这个:

  • RDD,弹性分布式数据集, 是分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,然而这些限制使得实现容错的开销很低。对开发者而言,RDD可以看作是Spark的一个对象,它本身运行于内存中,如读文件是一个RDD,对文件计算是一个RDD,结果集也是一个RDD ,不同的分片、 数据之间的依赖 、key-value类型的map数据都可以看做RDD。

在这里插入图片描述

9.4 (新增)RDD转换操作与行动操作的区别 P180

  • “行动”:用于执行计算并指定输出的形式。
  • “转换”:指定RDD之间的相互依赖关系。

两类操作的主要区别是,转换操作(如map,filter、groupBy、join 等)接受RDD并返回RDD,而行动操作(如count、collect等)接受RDD但是返回非RDD(即输出一个值或结果)。

9.4 (补充)RDD哪些操作属于转换操作,哪些操作属于行动操作(常用API表)

  • 转换操作(如map,filter、groupBy、join 等)
  • 行动操作(如count、collect 等)
    在这里插入图片描述

(新增)9.5 RDD惰性调用与DAG的构建

  • RDD惰性调用:在RDD的执行过程中,真正计算发生在RDD的“行动”操作。对于“行动”之前的所有“转换”操作,Spark只是记录“转换”操作应用的一些基础数据集以及RDD生成的轨迹,即互相之间的依赖关系,而不会触发真正的计算。
  • DAG的构建:当进行“行动”操作的时候,Spark才会根据RDD的依赖关系生产DAG,并从起点开始真正的计算。

补充一下:(了解就行)
采用惰性调用,通过DAG连接起来的一系列RDD操作就可以实现管道化,避免了多次转换操作之间数据同步的等待,而且不必担心有过多的中间数据,因为这些具有血缘关系(DAG)的操作都管道化了,一个操作得到的结果不需要保存为中间数据,而是直接管道式地流入到下一个操作进行处理。同时,这种通过血缘关系把一系列操作进行管道化连接的设计方式,也使得管道中每次操作的计算变得相对简单,保证了每个操作在处理逻辑上的单一性。

(新增)9.6 Spark宽依赖与窄依赖的定义,DAG阶段的划分

9.6.1 Spark宽依赖与窄依赖的定义

这里的宽窄可以记作父RDD的一个分区对应子RDD分区的范围大小,对应一个子RDD分区就是窄,对应多个就是宽。
在这里插入图片描述

9.6.2 DAG阶段的划分

在DAG中进行反向解析,遇到宽依赖就断开,遇到窄依赖就把当前的RDD加入到当前阶段中,将窄依赖尽量划分在同一阶段中
在这里插入图片描述

第十章

流数据就是动态数据。

(补充)10.5.3 Spark和Spark Streaming的差别

在这里插入图片描述

详细内容请查看原博客

点赞关注o不ok

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

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

相关文章

使用Tensorflow完成一个简单的手写数字识别

Tensorflow中文手册 介绍TensorFlow_w3cschool 模型结构图: 首先明确模型的输入及输出(先不考虑batch) 输入:一张手写数字图(28x28x1像素矩阵) 1是通道数 输出:预测的数字(1x10的one…

100种思维模型之信息传递思维模型-028

人与人之间存有 认知偏差和理解偏差 ,信息在传递过程中会 衰减、失真以及再加工 ! 信息传递思维模型 ,一个有助于 提高信息传递质量 的思维模型。下面从三个方面进行介绍, 何谓信息传递思维模型、信息传递思模型生活中的运…

JVM系统优化实践(9):G1垃圾回收器

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~在JDK8及其之前,一直用的都是ParNewCMS的组合:ParNew负责年轻代的垃圾回收,而由CMS负责老年代的垃圾回收,但会产生…

脑机接口科普0016——独立BCI与非独立BCI

本文禁止转载!!!! 所谓的“独立BCI”与“非独立BCI”仅仅是BCI系统中的一个术语。本章主要是介绍一下这两个术语。 这两个术语是由Wolpaw在2002年提出来的。 独立BCI是指不依赖于中枢神经系统的的输出。 非独立BCI是指那种依赖…

工作5年了,你竟然还不会应用优雅停机?

事情是这样的,小明是一个工作五年的老程序员,半秃着的头已经彰显了他深不可测的技术实力。 这一天,小明收到了领导给过来的一个需求。 领导对小明说:“小明啊,你工作五年了,这个需求我交给你一个人负责很是…

开源写作平台WriteFreely(基础篇)

什么是 WriteFreely ? WriteFreely 是一个专为作家打造的干净、极简主义的出版平台。可以用来创建一个博客,在您的组织内分享知识,或者围绕共同的写作行为建立一个社区。 这里值得一提的是, WriteFreely 支持 ActivityPub 协议,这…

逐句回答,流式返回,ChatGPT采用的Server-sent events后端实时推送协议Python3.10实现,基于Tornado6.1

善于观察的朋友一定会敏锐地发现ChatGPT网页端是逐句给出问题答案的,同样,ChatGPT后台Api接口请求中,如果将Stream参数设置为True后,Api接口也可以实现和ChatGPT网页端一样的流式返回,进而更快地给到前端用户反馈&…

剑指offer在排序数组中的二分法应用总结

排序数组中的搜索问题,首先想到 二分法 解决,本篇详细解析关于二分法边界的问题。 目录 一、二分法概念 二、剑指Offer53.在排序数组中查找数字 三、在排序数组中查找元素的第一个和最后一个位置 一、二分法概念 二分法就是在一个有序递增的数组中进行…

使用RabbitMQ发送短信

1、在项目中分别创建模块financial-core、financial-mq、financial-sms&#xff0c;如图&#xff1a; 模块构成 <modules><module>financial-common</module><module>financial-base</module><module>financial-core</module><mo…

剑指 Offer 66. 构建乘积数组

摘要 剑指 Offer 66. 构建乘积数组 一、左右乘积列表 我们不必将所有数字的乘积除以给定索引处的数字得到相应的答案&#xff0c;而是利用索引左侧所有数字的乘积和右侧所有数字的乘积&#xff08;即前缀与后缀&#xff09;相乘得到答案。对于给定索引i&#xff0c;我们将使…

Qt广告机服务器(上位机)

目录功能结构adSever.promain.cpptcp_MSG.h 共用Tcp传输信息adsever.h 服务器adsever.cpp 服务器addate.h 时间处理addate.cpp 时间处理adtcp.h 客户端Socket处理adtcp.cpp 客户端Socket处理client.h 客户端信息类client.cpp 客户端信息类admsglist.h 信息记录模块admsglist.cp…

jupyter的使用

1.安装 安装过程看这篇记录。 安装 2.如何启动 环境搭建好后&#xff0c;本机输⼊jupyter notebook命令&#xff0c;会⾃动弹出浏览器窗⼝打开 Jupyter Notebook # 进⼊虚拟环境 workon ai(这个是虚拟环境的名称) # 输⼊命令 jupyter notebook本地notebook的默认URL为&…

宝藏级BI数据可视化功能|图表联动分析

在浏览其他人的BI数据可视化报表时&#xff0c;经常会发现这样的一个现象&#xff0c;点一下上一张数据可视化图表中的某个门店&#xff0c;下一张图表将立即针对该门店展开数据可视化分析。这是什么效果&#xff1f;怎么实现&#xff1f;BI软件中还有多少宝藏级BI数据可视化功…

Oracle表分区的创建、新增、拆分

Oracle中为了方便管理、查询数据当数据量大于500w或者2G时最好用分区表&#xff0c;常见的一种是使用时间作为分区。 分区表添加新的分区有 2 种情况&#xff1a; (1) 原分区里边界是 maxvalue 或者 default。 这种情况下&#xff0c;我们需要把边界分区 drop 掉&#xff0c;加…

好的计划是成功的一半,如何制定项目计划?

好的计划是成功的一半&#xff0c;不好的计划会使项目一步步失败&#xff0c;任何事情&#xff0c;要取得成功&#xff0c;离不开一个科学合理的计划。 计划是为了实现项目所提出的各项目标&#xff0c;每一项任务都是针对某一个特定目标的&#xff0c;因此&#xff0c;一项计划…

计算机视觉手指甲标注案例

关键点标注是指识别和标注图像或视频中特定的相关点或区域的过程。在机器学习行业&#xff0c;它经常被用来训练计算机视觉模型&#xff0c;以执行诸如物体检测、分割和跟踪等任务。 关键点注释可用于以下应用&#xff1a; 面部关键点检测&#xff1a;识别图像中人脸上的眼睛…

12.SpringSecurity中OAuth2.0的实现

一、OAuth2.0介绍 1.概念说明 https://oauth.net/2/ 先说OAuth&#xff0c;OAuth是Open Authorization的简写。   OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息&#xff08;如…

[league/glide]两行代码实现一套强大的图片处理HTTP服务

只要两行代码&#xff0c;就能实现类似对象存储云提供的基于参数的图片处理&#xff0c;比如裁剪、放大、水印、旋转等等。 我们经常使用第三方的对象存储服务&#xff0c;比如七牛云或阿里云&#xff0c;他们都提供了“智能媒体服务”&#xff0c;其实就是在链接上加上各种参…

Vue:(三十四)Vuex及其属性

Vuex的学习更多是代码了&#xff0c;所以就放在一起了&#xff0c;接下来大概说一下吧。概念&#xff1a;专门在Vue中实现集中式状态&#xff08;数据&#xff09;管理的一个Vue插件&#xff0c;对Vue应用中多个组件的共享状态进行集中式的管理&#xff08;读/写&#xff09;&a…

【Git】P4 Git 远程仓库(2)克隆,抓取与拉取

Git 克隆&#xff0c;拉取与抓取git 克隆 clonegit 拉取 fetch、合并 mergegit 抓取 pullgit 克隆 clone 克隆的使用场景很少&#xff0c;举个例子&#xff0c;老板给你一个任务&#xff1a;这个服务的 bug 由你来解决&#xff1a;那么你的第一步就是从云端克隆到本地&#xf…