大数据技术原理笔记-考点版

本文详细介绍了大数据的基本概念,包括大数据的4V特点、思维方式的变化以及云计算和物联网的定义。重点讲解了Hadoop生态系统,尤其是HDFS的存储模型、数据块、名称节点和数据节点的角色。此外,还涵盖了NoSQL数据库的类型、优缺点,以及MapReduce的计算模型和在大数据处理中的应用。文章最后讨论了Hadoop的局限性及改进,如HDFS联邦和YARN资源管理框架。
摘要由CSDN通过智能技术生成

课本参考林子雨老师的大数据技术原理与应用 第三版

第一章 大数据概述

1.大数据定义及4V特点 Page 8-10,4个特点都要深入理解

(1)数据量大:“数据爆炸”成为大数据时代的鲜明特征

(2)处理速度快:数据生成到消耗的时间窗口小,用于决策的时间少;数据处理和分析的速度通常要达到秒级响应。

(3)数据类型繁多:大数据数据类型丰富,总体分为结构化和非结构化数据两类

(4)价值密度低:价值密度低,商业价值高

2.大数据对思维方式的重要影响 Page 12

(1)全样而非抽样

​ 过去:数据存储和处理能力限制,采用抽样

​ 现在:分布式文件系统和分布式计算模型提供了强大的数据存储和处理能力,采用全样

(2)效率而非精确

​ 过去:由于采用抽样分析,为限制误差放大,需要追求分析方法的精确性

​ 现在:采用全样分析,不存在误差放大问题;大数据要求实时分析结果,需要追求效率

(3)相关而非因果

​ 过去:重视因果关系

​ 现在:更注重相关性

3.大数据四大计算模式解决的问题,以及代表产品 Page 17

在这里插入图片描述

4.什么是流数据?流计算框架与平台分类 Page 17

(1)定义:流数据是指在时间分布和数量上无限的一系列动态数据集合体,数据的价值随着时间的流逝而降低,因此必须采用实时计算的方式给出秒级响应。

(2)作用:流计算可以实时处理来自不同数据源的、连续到达的流数据,经过实时分析处理,给出有价值的分析结果。

(2)分类

​ 1)商业级流计算平台

​ 2)开源流计算框架

​ 3)公司为支持自身业务开发的流计算框架

5.云计算、物联网定义 Page 19, Page 23

(1)云计算:云计算通过网络提供可伸缩的、廉价的分布式计算能力,用户只需接入网络就可以获得所需的各种IT资源

(2)物联网:物联网是物物相连的互联网,是互联网的延伸,它利用局部网络或互联网等通信技术把传感器、控制器、人员和物等通过新的方式联在一起,形成人与物、物与物相联,实现信息化和远程管理控制

6.大数据、云计算、物联网三者关系与区别 Page 27

(1)关系
在这里插入图片描述
(2)区别

​ 1)大数据侧重于对海量数据的存储、处理和分析,从海量数据中发现价值

​ 2)云计算旨在整合和优化IT资源,通过网络方式廉价提供给用户

​ 3)物联网的发展目标是实现“物物相连”,应用创新是物联网发展的核心

第二章 Hadoop

1.Hadoop生态系统两大核心组件?Page 29

分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce计算模型

2.Hadoop发展简史 Page 30

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.Hadoop特性 Page 30

(1)高可靠性:采用冗余数据存储方式,即使一个副本发生故障,其他副本也可以正常对外提供服务

(2)高效性:Hadoop采用分布式存储和分布式处理,能够高效处理PB级数据

(3)高可扩展性:Hadoop可以高效稳定地运行在廉价的计算机集群上,并可以扩展到数以千计的计算机节点上

(4)高容错性:采用冗余数据存储方式,自动保存数据的多个副本;能够自动重新分配失败任务

(5)成本低:Hadoop采用廉价的计算机集群

(6)运行在Linux平台上:Hadoop基于Java开发,可以较好地运行在Linux系统上

(7)支持多种编程语言:Hadoop的应用程序也可以使用其他语言编写,如C++

第三章 分布式文件系统HDFS

1.分布式文件系统的设计需求以及HDFS的实现情况 Page 48,表 3-1

设计需求含义HDFS实现
透明性具备访问透明性、位置透明性、性能和伸缩透明性一定程度访问透明性;完全的位置透明性,性能和伸缩透明性
并发控制客户端对文件的读写不应影响到其他客户端对同一文件的读写任何时间都只允许一个程序写入文件
文件复制一个文件在不同位置有多个副本采用了多副本机制
硬件和操作系统异构性可在不同硬件和操作系统上实现同样的客户端和服务端程序基于Java开发,具有很好的跨平台能力
可伸缩性支持节点动态加入和退出建立在大规模廉价计算机集群上,具有很好的伸缩性
容错文件服务在客户端或服务端出错时能正常使用具有多副本机制、故障自动检测和恢复机制
安全保障系统安全安全性较弱

2.HDFS实现目标 Page 49

(1)兼容廉价的硬件设备:设置故障自动检测和恢复机制使得节点失效情况下也能实现数据的完整性

(2)流数据读写:能够以流式方式访问文件系统数据

(3)大数据集:可支持PB级数据存储和处理

(4)简单的文件模型:采用“一次写入,多次读取”的简单文件模型,一旦文件被写入,只能被读取

(5)强大的跨平台兼容性:HDFS基于Java实现,具有很好的跨平台兼容性

3.HDFS体系结构局限 Page 49

(1)不适合低延迟数据访问:HDFS面向批处理设计,采用流式方式访问数据,具有较高延迟

(2)无法高效存储大量小文件:过多小文件会给系统扩展性和性能带来诸多问题

​ 1)元数据检索效率低

​ 2)过多Map任务,造成进程管理开销大

​ 3)访问大量小文件速度低

(3)不支持多用户写入及任意修改文件:不允许多用户对同一个文件执行写操作;只允许对文件执行追加操作,不支持随机写

4.HDFS块的特点 Page 50

​ HDFS默认一个块64MB,一个文件被分成多个块,以块作为存储单位。

​ 块的大小在设计上远远大于普通文件系统,可以最小化寻址开销。寻址开销包括磁盘定位开销和寻道开销。

5.HDFS为什么采用抽象块的概念?Page 50

(1)支持大规模数据存储:存储文件的大小不会受到单个节点的存储容量限制,可以远远大于网络中任意节点的存储容量

(2)简化系统设计:文件块大小是固定的,容易计算出一个节点可以存储多少文件块;方便元数据的管理

(3)适合数据备份:每个文件块冗余存储到多个节点上

(4)块的大小在设计上远远大于普通文件系统,可以最小化寻址开销

6.名称节点、数据节点、第二名称节点 Page 50、 Page 51

(1)名称节点

​ 1)作用:负责管理分布式文件系统的命名空间。保存了两个核心的数据结构,即FsImage和EditLog。名称节点记录了每个文件中各个块所在的数据节点的位置信息。

​ 2)名称节点启动:将FsImage文件中的内容加载到内存中,之后再执行EditLog文件中的各项操作,使得内存中的元数据和实际的同步
在这里插入图片描述
3)FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据

注意:FsImage文件没有记录每个块存储在哪个数据节点。名称节点把映射信息保留在内存

​ 4)操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作

名称节点启动后,HDFS中的更新操作会写到EditLog文件中

EditLog过大解决方案:SecondaryNameNode第二名称节点

(2)SecondaryNameNode第二名称节点

​ 第二名称节点是HDFS架构中的一个组成部分,用来保存名称节点中元数据信息的备份,减少名称节点重启的时间。

工作情况:

(1)SecondaryNameNode会定期和NameNode通信,请求其停止使用EditLog文件,暂时将新的写操作写到一个新的文件edit.new上来,这个操作是瞬间完成,上层写日志的函数完全感觉不到差别。
(2)SecondaryNameNode通过HTTP GET方式从NameNode上获取到FsImage和EditLog文件,并下载到本地的相应目录下。
(3)SecondaryNameNode将下载下来的FsImage载入到内存,然后一条一条地执行EditLog文件中的各项更新操作,使得内存中的FsImage保持最新;这个过程就是EditLog和FsImage文件合并。
()4SecondaryNameNode执行完(3)操作之后,会通过post方式将新的FsImage文件发送到NameNode节点。
NameNode将从SecondaryNameNode接收到的新的FsImage替换旧的FsImage文件,同时将edit.new替换EditLog文件,通过这个过程EditLog就变小了。

(3)数据节点

​ 数据节点是HDFS的工作节点,负责数据的存储和读取。

​ 根据客户端或名称节点的调度来进行数据的存储和检索

​ 定期向名称节点发送自己所存储的块的列表

7.名称节点核心数据结构 Page 51

​ 保存了两个核心的数据结构,即FsImage和EditLog。
在这里插入图片描述

​ 1)FsImage用于维护文件系统树,以及文件系统树中文件和文件夹的元数据

​ 注意:FsImage文件没有保存文件块和数据节点的映射信息。名称节点把映射信息保存在内存

​ 2)操作日志文件EditLog中记录了所有针对文件的创建、删除、重命名等操作

8.HDFS只设置唯一名称节点的体系结构局限?Page 54

(1)命名空间的限制:名称节点保存在内存中,因此名称节点能够容纳的对象个数会受到内存空间大小的限制。

(2)性能的瓶颈:分布式文件系统的吞吐量,受限于单个名称节点的吞吐量。

(3)隔离问题:集群中只有一个名称节点,只有一个命名空间,无法对不同应用程序进行隔离。

(4)集群的可用性:名称节点发生故障,会导致整个集群变得不可用。

9.HDFS多副本冗余存储优点?Page 54-55

(1)原理:HDFS采用了多副本方式进行冗余存储,一个数据块的多个副本会被分布到不同的数据节点上

(2)好处:

​ 1)加快数据传输速度:多客户访问同一文件时,客户可从不同的数据副本中读取数据,加快了数据传输速度

​ 2)容易检查数据错误:采用多副本可以校验副本是否出错

​ 3)保证数据可靠性:某个数据节点失效,并不会造成数据丢失

10.HDFS数据流水线复制策略 Page 56

​ 文件被切分为若干块,客户端向名称节点发起写请求。名称节点返回数据节点列表。客户端把数据首先写入列表的第一个数据节点,并把数据节点列表也发送给第一个数据节点,第一个数据节点接收一部分数据后,将接收的数据和数据节点列表发给第二个数据节点,以此类推直到文件写完,完成复制。

11.HDFS数据错误3种类型?Page 56

(1)名称节点出错

​ HDFS设置了备份机制,把核心文件复制到备份服务器第二名称节点上。

​ 名称节点出错时,可以根据第二名称节点中的FsImage和Editlog数据进行恢复。

(2)数据节点出错

①数据节点通过定期向名称节点发送“心跳”信息,向名称节点报告自己的状态。

②数据节点发生故障或者网络断网时,名称节点就无法收到来自该数据节点的心跳信息,将这些数据节点标记为“宕机”,数据节点上面的所有数据被标记为“不可读”,名称节点不会再给它们发送任何I/O请求。

③由于一些数据节点的不可用,会导致一些数据块的副本数量小于冗余因子。名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于冗余因子,就会启动数据冗余复制,为它生成新的副本。

HDFS和其它分布式文件系统的最大区别就是可以调整冗余数据位置

(3)数据出错

客户端在读取到数据后,会采用MD5和SHA-1对数据块进行校验,以确保读取到正确的数据。

第四章 HBase

1.HBase如何实现协同服务,实现稳定服务和失败恢复?Page 67

HBase利用Zookeeper进行协同服务,稳定服务和失败恢复

2.HBase负载均衡和数据分发基本单位: Region

Region:根据行键的值对HBase表中的行进行分区,每个行区间构成一个分区,称为Region

哎,HBase不是面向列存储吗?Region内部包含Store,每个Store对应表中的一个列族的存储。Store由MemStore和StoreFile构成。StoreFile是B树结构。

3.HBase和Big Table底层技术对应关系,开源实现 Page 68

在这里插入图片描述

4.HBase存储模式及优点 Page 69

(1)存储模式:HBase基于列存储,每个列族(Store)都由几个文件(StoreFile)保存,不同列族的文件是分离的(不同Store)

(2)优点:

​ 1)可以降低IO开销:只需要查询需要的列数据

​ 2)支持大量并发用户查询:不同用户访问的列可能是不一样的

​ 3)同一个列族中的数据压缩比较高:同一列族数据比较相似

5.HBase数据模型定义、概念Page 70、 HBase数据模型优缺点

(1)定义

​ HBase是一个稀疏、多维、持久化存储的映射表,它采用行键、列族、列限定符、和时间戳作为索引,每个值是未经解释的字符串数组。

(2)优点

​ 1)列族数据模型灵活,支持动态扩展,容易添加列族或列,无需预定义列数量和数据类型

​ 2)列族是基本的访问控制单元,可以借助列族上的控制权实现特定目的

​ 3)列族可以支持不同类型的访问模式,如将列族放到内存中获取更高的响应性能

​ 4)适应大数据场景:数据模型可以支持结构化和半结构化的数据

(3)缺点:

​ 1)不适合复杂查询操作:HBase不支持像SQL这样的声明性查询语言

6.HBase为什么采用四维坐标数据模型,关系数据库二维坐标模型是否可以用来存储大数据?

(1)HBase为什么采用四维坐标数据模型

​ 行键:行键的设计将相关的数据行存储在一起,有助于提高查询性能。

​ 列族:HBase基于列存储,读取数据时只选择特定的列族,有助于减少磁盘I/O的开销。

​ 列限定符:列限定符可以在列族内对数据进行更细粒度的组织和访问。

​ 时间戳:时间戳用于版本控制,可以按时间范围查询数据。

​ 通过采用行键、列族、列限定符和时间戳,HBase提供了灵活的数据模型和强大的查询能力。行键提供了高效查询,列族和列限定符提供了数据组织和选择的灵活性,提高扩展性,时间戳允许存储和查询历史版本的数据。这些设计元素结合在一起,使得HBase在处理大规模结构化数据时具有高效性和可扩展性。

(2)关系数据库二维坐标模型是否可以用来存储大数据

对于大数据存储和处理,关系数据库的二维坐标模型在某些情况下可能不是最佳选择,原因如下:

  1. 数据规模和性能:大数据的处理存在性能瓶颈。随着数据量的增加,关系数据库面临数据存储和查询的延迟问题。
  2. 扩展性:水平扩展性差。
  3. 数据模型灵活性:对于非结构化或半结构化的大数据来说不够灵活。

7.如何理解HBase稀疏、多维度、排序的特点,映射表

(1)稀疏:HBase表里面有很多空的单元格。每个行包含相同的列族,但不需要在每个列族里存储数据

(2)多维度:HBase表在水平方向上由一个或多个列族组成,一个列族可以包含任意多个列

(3)排序:HBase每个单元格都保存着同一份数据的多个版本,不同版本根据时间戳降序存储

(4)映射表:HBase表的概念视图是物理视图的映射。概念视图中表由行组成,物理存储中表基于列存储

8.HBase 概念视图、物理视图、区别 Page 72-73

(1)概念视图:概念视图中,表可以视为一个稀疏多维的映射关系

(2)物理视图:物理视图中,表基于列存储

(3)区别:

​ 1)概念视图表由行组成,物理视图表基于列存储,由列组成

​ 2)概念视图中有大量空内容,物理视图不保存空内容

9.面向列存储和面向行存储的区别、优缺点 Page 73-75

(1)区别

​ 1)行式数据库采用行存储模型NSM,数据按行存储;列式数据库采用列存储模型DSM,数据按列存储。

​ 2)访问数据时,面向行存储需要扫描每个元组的完整内容;面向列存储每个子关系只有当其相应的属性被请求时才会被访问。

​ 3)行式数据库适合小批量数据处理;列式数据库适合批量数据处理和即席查询

(2)列式数据库优缺点

​ 优点:降低I/O开销;支持大量并发用户查询;具有较高的数据压缩比

​ 缺点:执行连接操作需要元组重构代价;

(3)行式数据库优缺点

​ 优点:?

​ 缺点:某些查询会浪费磁盘空间和内存带宽

10.HBase三层结构各层次名称和作用 Page 77

在这里插入图片描述

11.HBase 客户端如何访问数据?Page 78

​ 首先访问ZooKeeper,获取-ROOT-表的位置,然后访问-ROOT-表,获取.META.表Region位置,然后访问.META.表,找到用户数据表的Region位于哪个Region服务器,然后到该服务器读取Region数据。

​ 为加快访问速度,一般会在客户端把查询过的用户数据表的Region位置信息缓存起来

12.HLog 工作原理 Page 81

(1)HLog是一种预写式日志,用户更新数据必须首先被写入日志,然后才能写入MemStore缓存,直到MemeStore缓存的对应日志内容写入磁盘后,用户数据的缓存内容才能被写入磁盘。

(2)故障恢复:Master主服务器将故障Region服务器的HLog根据每条日志所属的Region对象拆分,并将拆分日志和对应的Region重新分配到可用的Region服务器,可用Reion服务器重做拆分日志操作以恢复Region。

13.每个Region服务器维护一个HLog 优缺点 Page 82

(1)优点:减少磁盘寻址次数,提高表的写操作性能。多个Region对象的更新操作写到单个日志文件中,而不用写入多个日志文件。

(2)缺点:Region服务器故障时,HLog需要先根据所属Region对象拆分HLog,然后才能进行恢复工作。

第五章 NoSQL

1.NoSQL定义 Page 98

​ NoSQL是一种不同于关系数据库的数据库管理系统设计方式,是对非关系数据库的统称

2.NoSQL兴起原因 Page 99

(1)NoSQL方面

​ 1)灵活的可扩展性:具备良好的横向扩展能力

​ 2)灵活的数据模型:能够满足各种新兴的业务需求

​ 3)与云计算紧密融合:充分利用云计算基础设施

​ 4)支持MapReduce风格编程,可以较好用于大数据时代各种数据管理

(2)关系数据库方面:难以满足Web2.0时代和新应用的需求

​ 1)无法满足Web2.0需求。无法满足海量数据管理需求;无法满足数据高并发需求;无法满足高可用性和高扩展性需求

​ 2)关系数据库事务机制和查询机制在Web2.0时代成为“鸡肋”。Web2.0网站通常不要求严格的数据库事务;不要求严格的读写实时性;不包含大量复杂的SQL查询。

3.NoSQL四大类型 Page 102-105 (对比分析RDB,优缺点)

(1)键值数据库:Redis

优点:扩展性好,灵活性好,大量写操作时性能高

缺点:无法存储结构化信息,条件查询效率较低

(2)列族数据库:HBase

优点:查找速度快,可扩展性强,容易进行分布式扩展,复杂性低

缺点:功能较少,大都不支持强事务一致性

(3)文档数据库:MongoDB

优点:性能好(高并发),灵活性高,复杂性低,数据结构灵活

​ 提供嵌入式文档功能,将经常查询的数据存储在同一个文档中

​ 既可以根据键来构建索引,也可以根据内容构建索引

缺点:缺乏统一的查询语法

(4)图数据库:Neo4j

优点:灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱

缺点:复杂性高,只能支持一定的数据规模

4.NoSQL三大基石:CAP、BASE、最终一致性 Page 105-108

在这里插入图片描述
(1)CAP

C(Consistency):一致性,是指任何一个读操作总是能够读到之前完成的写操作的结果,也就是在分布式环境中,多点的数据是一致的,或者说,所有节点在同一时间具有相同的数据;

A:(Availability):可用性,是指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或者失败都有响应;

P(Tolerance of Network Partition):分区容忍性,是指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点进行通信),分离的系统也能够正常运行,也就是说,系统中任意信息的丢失或失败不会影响系统的继续运作

CAP理论告诉我们,一个分布式系统不可能同时满足一致性、可用性和分区容忍性这三个需求,最多只能同时满足其中两个
在这里插入图片描述
(2)BASE

与ACID对比
在这里插入图片描述
BA基本可用

​ 基本可用,是指一个分布式系统的一部分发生问题变得不可用时,其他部分仍然可以正常使用,也就是允许分区失败的情形出现

S软状态

​ “软状态(soft-state)”是与“硬状态(hard-state)”相对应的一种提法。数据库保存的数据是“硬状态”时,可以保证数据一致性,即保证数据一直是正确的。“软状态”是指状态可以有一段时间不同步,具有一定的滞后性

E最终一致性

​ 一致性的类型包括强一致性弱一致性,二者的主要区别在于高并发的数据访问操作下,后续操作是否能够获取最新的数据。

​ 对于强一致性而言,当执行完一次更新操作后,后续的其他读操作就可以保证读到更新后的最新数据;

​ 反之,如果不能保证后续访问到的都是更新后的最新数据,那么就是弱一致性。而最终一致性只不过是弱一致性的一种特例:允许后续的访问操作可以暂时读不到更新后的数据,但是经过一段时间之后,必须最终读到更新后的数据。

​ 最终一致性根据更新数据后各进程访问到数据的时间和方式的不同,又可以区分为:因果一致性、“读己之所写”一致性、单调读一致性、会话一致性、单调写一致性。

5.不同产品在设计时如何运用CAP理论? Page 107

(1)CA:强调一致性和可用性,放弃分区容忍性。

​ 将所有与事务相关的内容都放到同一台机器上。

​ MySQL、SQL server等

(2)CP:强调一致性和分区容忍性,放弃可用性

​ 网络出现分区情况时,受影响的服务需要等待数据一致,期间无法对外提供服务

​ Neo4J、BigTable、HBase、MongoDB、Redis

(3)AP:强调可用性和分区容忍性,放弃一致性

​ 允许系统返回不一致的数据。采用AP也可以不完全放弃一致性,如采取最终一致性

6.NewSQL数据库优点 Page 109

(1)具有NoSQL对海量数据的存储和处理能力

(2)保留了传统数据库的事务机制的ACID特性和SQL特性

(3)支持关系数据模型

7.数据引发的数据处理架构变革 Page 110

(1)过去:业界和学术界追求的方向是“一种架构支持多类应用”,包括事务型应用、分析型应用和互联网应用

(2)现在:一种架构无法满足所有场景。数据库架构向着多元化方向发展,形成了传统关系数据库、NoSQL数据库和NewSQL数据库3个阵营

第六章 云数据库

1.云数据库定义 Page 116

​ 云数据库是部署在云计算环境中的虚拟化数据库,是一种新兴的共享架构的方法,极大增强了数据存储能力;避免了资源重复配置;让软硬件升级更加容易;虚拟化许多后端功能。

2.云数据库特性 Page 117 (理解透)

(1)动态可扩展性:面对不同数据存储和处理需求,可以表现出很高的弹性

(2)高可用性:不存在单点失效问题;数据冗余存储、地理空间上分散存储

(3)高性能:采用大型分布式存储服务集群,支持海量数据访问

(4)易用性:用户只需要URL即可使用数据库

(5)使用代价低:云数据库采用能够帮助用户节省开销的共享资源的多租户形式;云数据库底层使用大量廉价的商业服务器

(6)免维护:用户不需要关心硬件和数据库的各种风险故障

(7)安全:云服务商提供数据隔离、安全性检查和数据多点备份等服务

3.云数据库、关系数据库、NoSQL数据库之间的关系 Page 119

​ 从数据模型的角度来说,云数据库没有专属于自己的数据模型,因此云数据库并不是一种全新的数据库技术,而是一种以服务的方式提供数据库功能的技术。云数据库的后端数据库以MySQL为主,NoSQL为辅。

第七章 MapReduce

1.MapReduce 简介 Page 132

(1)MapReduce将复杂的、运行于大规模集群上的并行计算过程高度抽象为两个函数:Map和Reduce

(2)前提:待处理的数据集可以被分解为许多小的数据集,而且每一个小的数据集可以完全并行地处理

(3)MapReduce策略:分而治之

(4)MapReduce设计理念:计算向数据靠拢。因为数据传输需要大量的网络开销

(5)MapReduce架构:采用了Master/Slave架构,包括一个Master和若干个Slave。Master上运行JobTracker,Slave上运行TaskTracker 。

2.Map函数输入输出、Reduce函数输入输出 Page 132

在这里插入图片描述
(1)Map函数的输入是分布式系统的文件块,输出键值对列表

(2)Reduce函数的输入是键值对列表,输出处理后的键值对。单个Reduce任务的输出结果是一个文件。

3.“合并”过程和“归并”过程区别 Page 136、137

(1)合并:合并是将具有相同键的键值对的值起来

(2)归并:归并是将具有相同键的键值对的值整合到一起

4.Map端Shuffle过程 Page 135

(1)输出结果写入到缓存

(2)缓存满或超过溢写比例时启动溢写操作

(3)溢写操作:

​ 1)对缓存中的数据分区

​ 2)对每个分区的数据进行排序和合并

​ 3)写入磁盘文件

(4)Map结束之前,溢写文件会被归并为一个大的磁盘文件

5.Reduce端Shuffle过程 Page 137

(1)从Map端领取Map任务结果

(2)执行归并操作

(3)输送给Reduce任务处理

6.MapReduce具体应用场景 Page 142-144

(1)关系代数

​ 1)选择运算:只需要Map操作,检查输入键值对是否符合条件;Reduce不做任何处理直接输出

​ 2)投影运算:

​ ①Map:删除元组中不需要的字段

​ ②Reduce:删除冗余元组

​ 3)并运算

​ ①Map:将两个关系的元组转化为<t,t>

​ ②Reduce:删除冗余元组

​ 4)交运算

​ ①Map:将两个关系元组转化为<t,t>

​ ②Reduce:如存在两个以上相同的<t,t>,输出一个<t,t>

​ 5)差运算R-S

​ ①Map:将元组转化为<t,<R,t>>或者<t,<S,t>>

​ ②Reduce:保留键值唯一,并且所属关系为R的键值对

​ 6)自然连接R连接S,公共属性为B

​ ①Map:以B为键,所属关系和元组为值,得到键值对<b,<R,a>>或者<b,<S,c>>

​ ②Reduce:把b值相同的来自不同关系的元组结合起来

​ 7)聚合运算

​ ①Map:选择关系的某一字段的值作为键

​ ②Reduce:对相同键值的键值对施加某种聚合运算,如求和、计数、求均值,最大最小值

​ 8)矩阵-向量乘法

​ ①Map:输入为向量和M的一个文件块。输出为键值对<i行,i行j列矩阵元素*第j个向量元素>

​ ②Reduce:合并 i 值相同的键值对

​ 若向量太大,可以对矩阵和向量切分,计算过程不变。

​ 9)矩阵乘法

​ 矩阵乘法可以通过两个MapReduce运算的串联来实现

​ 阶段1根据列索引进行自然连接

​ ①Map:将矩阵输入转化为<列值,<矩阵名,行值,元素值>>的形式。列值指第一个矩阵的列,第二个矩阵的行

​ ②Reduce:将列值相同的来自两个矩阵的键值对合并为<列值,<新行值,新列值,对应位置计算后的元素值>>

​ 阶段2分组聚合

​ ①Map:将新行值和新列值作为键,计算后的元素值作为值输出键值对

​ ②Reduce:合并键值对

7.关系代数运算符并行执行算法,包括:算法步骤、Map输入、输出,Reduce输入、输出

​ 见6

8.单词统计过程

①Map输入:<key,value>,key是行号,value是行内容

②Map处理:将行内容拆分为单词列表,创建键值对<单词,1>

③Map输出:<单词,1>列表

④Map端Shuffle:根据键值对分区,然后归并键值对为<单词,<1,1,1,…>>的形式,排序

⑤Reduce端Shuffle:领取Map端Shuffle输出,然后归并和排序

⑤Reduce输入:<单词,<1,1,1,1,1,1,…>>列表

⑥Reduce处理:合并键值对

⑦输出结果到文件

第八章 Hadoop再探讨

1.Hadoop局限与不足 Page 155

(1)抽象层次低:实现简单功能也需要编写大量代码

(2)表达能力有限:实际生产环境中的一些任务无法用Map和Reduce来表达

(3)开发者自己管理作业之间的依赖关系:MapReduce框架没有提供相关的机制对这些依赖进行有效管理

(4)难以看到程序的整体逻辑:处理逻辑隐藏在代码细节中,为代码理解和后期维护带来代价

(5)迭代操作效率低:迭代需要反复读写HDFS中的数据,大大降低迭代的效率

(6)资源浪费:Reduce任务需要等待Map任务结束后才能开始

(7)实时性差:只适应于离线批数据处理,无法支持交互式数据处理和实时数据处理

2.Hadoop框架自身改进 Page 156

在这里插入图片描述

3.HDFS HA Page 157

(1)作用:解决单一名称节点单点故障问题

(2)内容

​ HA集群设置两个名称节点,“活跃(Active)”和“待命(Standby)”。两个名称节点的状态同步,可以借助于一个共享存储系统来实现。一旦活跃名称节点出现故障,就可以立即切换到待命名称节点

​ Zookeeper确保一个名称节点对外服务

​ 名称节点维护映射信息,数据节点同时向两个名称节点汇报信息

4.HDFS 1.0单名称节点设计存在的问题 Page 158

(1)单点故障问题:导致集群不可用

(2)可扩展性问题:单个名称节点限制了系统中数据块、文件和目录的数目

(3)系统整体性能:HDFS吞吐受限于单个名称节点的吞吐量

(4)隔离性:难以提供不同程序之间的隔离性,一个程序的运行可能会影响到其他程序运行。

5.HDFS联邦优点 Page 159

(1)集群可扩展性:名称节点分管目录,可以让集群扩展到更多节点

(2)系统整体性能更高:多个名称节点同时对外提供服务,具有更高的读写吞吐率

(3)良好的隔离性:不同业务可以交由不同的名称节点管理

注意HDFS联邦不能解决单点故障问题

6.MapReduce 1.0 Master/Slave架构设计的缺陷 Page 160

(1)存在单点故障,容易导致集群不可用

(2)JobTracker“大包大揽”导致任务过重

(3)资源划分不合理:强制划分为slot ,包括Map slot和Reduce slot

(4)容易出现内存溢出:分配资源只考虑MapReduce任务数,不考虑CPU、内存

7.什么是YARN? YARN体系结构 Page 159、161

(1)什么是Yarn:资源管理调度框架

​ MapReduce1.0既是一个计算框架,也是一个资源管理调度框架

​ 到了Hadoop2.0以后,MapReduce1.0中的资源管理调度功能,被单独分离出来形成了YARN,它是一个纯粹的资源管理调度框架,而不是一个计算框架

​ 被剥离了资源管理调度功能的MapReduce 框架就变成了MapReduce2.0,它是运行在YARN之上的一个纯粹的计算框架,不再自己负责资源调度管理服务,而是由YARN为其提供资源管理调度服务

(2)Yarn体系结构

​ Yarn体系结构包含了三个组件:ResourManager、ApplicationMaster、NodeManager
在这里插入图片描述

8.YARN各组件功能 Page 162

(1)ResourceManager处理客户端请求、启动/监控ApplicationMaster、监控NodeManager、资源分配与调度

​ 主要包括两个组件,即调度器(Scheduler)和应用程序管理器(Applications Manager)

​ 1)调度器:把集群中的资源以“容器”的形式分配给提出申请的应用程序。容器(Container)作为动态资源分配单位,每个容器中都封装了一定数量的CPU、内存、磁盘等资源,区别slot。

​ 2)应用程序管理器:负责系统中所有应用程序的管理工作,主要包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动等

(2)ApplicationMaster:为应用程序申请资源,并分配给内部任务、任务调度、监控与容错

​ 1)当用户作业提交时,ApplicationMaster与ResourceManager协商获取资源,ResourceManager会以容器的形式为ApplicationMaster分配资源

​ 2)把获得的资源进一步分配给内部的各个任务(Map任务或Reduce任务),实现资源的“二次分配”

​ 3)与NodeManager保持交互通信进行应用程序的启动、运行、监控和停止,监控申请到的资源的使用情况,对所有任务的执行进度和状态进行监控,并在任务发生失败时执行失败恢复(即重新申请资源重启任务)

​ 4)定时向ResourceManager发送**“心跳”消息**,报告资源使用情况和应用进度信息

​ 5)当作业完成时,ApplicationMaster向ResourceManager注销容器,执行周期完成

(3)NodeManager:单个节点上的资源管理、处理来自ResourceManger和ApplicationMaster的命令

​ 1)容器生命周期管理

​ 2)监控每个容器的资源(CPU、内存等)使用情况

​ 3)跟踪节点健康状况

​ 4)以“心跳”的方式与ResourceManager保持通信

​ 5)向ResourceManager汇报作业的资源使用情况和每个容器的运行状态

​ 6)接收来自ApplicationMaster的启动/停止容器的各种请求

第十章 Spark

1.Spark简介、定义 Page 192, 197

Spark是基于内存计算的大数据并行计算框架,可用于构建大型低延迟数据分析应用程序

2.对比Hadoop和Spark执行流程,哪一个更适合迭代运算?Page 194

(1)Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更灵活

(2)Spark提供了内存计算,可将中间结果放到内存中,迭代运算效率更高

(3)Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce迭代执行机制

3.Spark生态系统各组件功能 Page 196

在这里插入图片描述
(1)Spark Core:包含Spark基本功能,内存计算,任务调度,部署模式,故障恢复,存储管理,面向批处理。Spark建立在抽象弹性分布式数据集RDD上

(2)Spark SQL:Spark SQL允许直接处理RDD;支持Hive,HBase等外部数据源查询;进行复杂数据分析

(3)Spark Streaming:支持高吞吐量、可容错的实时数据处理。核心思想是将流数据分解为小的批处理作业进行处理

(4)Structured Streaming:基于Spark SQL构建的流处理引擎

(5)MLlib:机器学习算法包

(6)GraphX:用于图计算

4.RDD定义 Page 200

​ 弹性分布式数据集RDD是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。

​ 一个RDD是一个分布式对象的集合,本质是一个只读的分区记录集合,每个RDD可以分为多个分区,每个分区就是一个数据集片段。

​ 提供“转换”和“行动”两种操作

5.RDD窄依赖和宽依赖?Page 205

(1)区分:是否包含Shuffle操作是区分窄依赖和宽依赖的根据

(2)定义:

​ 窄依赖表现为一个父RDD的分区对应于一个子RDD的分区或多个父RDD的分区对应于一个子RDD的分区

​ 宽依赖则表现为存在一个父RDD的一个分区对应一个子RDD的多个分区
在这里插入图片描述
(3) 窄依赖对于作业的优化很有利,宽依赖无法优化。只有窄依赖可以实现流水线优化,宽依赖包含Shuffle过程,无法实现流水线方式处理。

6.Spark运行架构如何反映RDD之间的依赖关系?DAG Page 202-208

(1)Spark运行架构

①首先为应用构建起基本运行环境,即由Driver创建一个SparkContext,进行资源申请、任务分配和监控

②资源管理器为Executor分配资源,并启动Executor进程

③SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor运行,并提供应用程序代码

④Task在Executor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源
在这里插入图片描述
(2)反映

​ Spark通过分析各个RDD的依赖关系构建DAG,(DAGSchedular)再通过分析DAG中各个RDD中的分区之间的依赖关系来决定如何划分Stage,具体划分方法是:

​ ①在DAG中进行反向解析,遇到宽依赖就断开

​ ②遇到窄依赖就把当前的RDD加入到Stage中

​ ③将窄依赖尽量划分在同一个Stage中,可以实现流水线计算

7.Spark如何实现资源调度管理?YARN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值