《大数据技术原理与应用》 复习笔记 (桂林电子科技大学)

Posted wanluN1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《大数据技术原理与应用》 复习笔记 (桂林电子科技大学)相关的知识,希望对你有一定的参考价值。

桂林电子科技大学 大数据课程 复习笔记
考试范围
教材:《大数据技术原理与应用》第三版 林子雨
第1章:大数据概述 🎉
第2章:大数据处理架构Hadoop 🎉
第3章:分布式文件系统HDFS 🎉
第4章:分布式数据库HBase🎉
第5章:NoSQL数据库🎉
第7章:MapReduce🎉
第10章:Spark🤷‍♂️
第11章:流计算(Storm)

第1章 大数据概述

重要知识点:
1、大数据的4V
数据量大:在Web2.0时代、网络用户数目极大,在视频、照片社交软件火热的今天,用户产生的数据量非常大。
数据类型繁多:有金融大数据、医疗大数据、城市大数据等等。
处理速度快:1分钟,新浪微博产生2万条微博,Twitter产生10万条推文。
价值密度低:例如监控视频的存储,没有调取监控视频用时可能价值并没有体现,但在使用时可能会产生很大的价值。

2、大数据的应用
智能汽车、能源、体育与娱乐等等、大数据应用非常广泛。

3、大数据关键技术
数据采集与预处理、数据存储和管理(HDFS)、数据处理与分析(如MapReduce)、数据安全和隐私保护。

4、大数据计算模式
批处理计算:对大规模数据的批量处理 (MapReduce、Spark)
流计算:针对流数据的实时计算(Spark)
图计算:针对大规模图结构的数据的处理
查询分析计算:大规模数据的存储管理和查询分析(Hive)

5、大数据与云计算、物联网的关系

云计算为大数据提供技术基础、大数据为云计算提供用武之地。
物联网是大数据的重要来源、大数据技术为物联网数据分析提供支撑。
云计算为物联网提供海量数据存储能力,物联网为云计算技术提供了广阔的应用控件。

第2章 大数据处理架构Hadoop

1、Hadoop的核心
HDFS是分布式文件存储系统(Hadoop Distributed File System) 、也是Hadoop的核心。

2、Hadoop的特性
高可靠性 、高效性、高可扩展性 、高容错性 、成本低 、支持操作系统与编程语言广泛

3、HDFS常用命令
创建文件夹(-p 递归创建) hadoop fs -mkdir -p /user/hadop
显示文件内容 hadoop fs -cat hdfs文件
文件上传 hadoop fs -put 本地 hdfs文件
删除文件夹 hadoop fs -rm -r hdfs文件夹
删除文件 hadoop fs -rm hdfs文件
切换目录:cd
查看文件与目录:ls -R(-R在hdfs为递归查看)
删除空目录:rmdir
复制文件或目录:cp
裁剪:mv
创建文件:touchz
拉取文件 get

第3章 分布式系统 HDFS

1、 HDFS计算机集群结构
分布式文件系统把文件分布存储到多个计算机节点上、成千上万的计算机节点构成计算机集群。

2、 HDFS的结构
一个默认块大小为64MB,如果一个文件小于一个数据块的大小,在分布式文件系统,它并不占用整个数据块的存储空间。
名称节点负责文件和目录的创建、删除、和重命名等,同时管理着数据节点和文件快的映射关系。
数据节点负责数据的存储和读取,在存储时,由名称节点分配存储文职,客户端将数据直接写入相应数据节点。
为了保证数据的完整性,文件块会被赋值为多个副本存储到多个不同的节点上,而存储同一文件块的不同副本又会分布在不同的机架上。

3、 HDFS特点
优点:
兼容廉价的设备硬件。
流数据读写:支持流式方式来访问文件。
大数据集:单个文件可达到GB甚至TB级别
简单的文件模型:一次写入,多次读取。
强大的跨平台兼容性。
缺点:
不适合低延迟数据访问。
无法高效存储大量小文件。
不支持多用户写入及任意修改文件。

4、 HDFS的相关概念(重点)
重点:块、名称节点和数据节点与第二名称节点。
:HDFS文件块的大小默认为64MB,一个文件会被拆分为多个块进行存储。(相关知识点:MapReduce中的Map任务一次只能处理一块中的数据。)
采用块抽象化的好处:支持大规模文件存储、简化系统设计、设和数据备份。
名称节点负责管理分布式文件系统的命名空间,保存了FsImage和EditLog.
FsImage用于维护文件系统树以及文件树中所有的文件和问价夹的元数据。
EditLog(操作日志文件)记录了所有针对文件的创建、删除、重命名、等操作。
名称节点存储文件名与文件在数据节点中的位置的映射关系、但并不是持久化存储在名称节点,而是当名称节点启动时扫描分布式文件系统得到的。
名称节点启动将FsImage加载到内存-> 重新执行EditLog->建立新的空FsImage和EditLog->工作记录时使用新的FsImage和EditLog当变大后系统写入到总的FsImage和EditLog内(工作模式请看第二名称节点)

数据节点 负责数据的存储和读取,根据客户端和名称节点的调度进行数据的存储和检索。也会定时向名称节点汇报自己的存储块列表信息。

第二名称节点:
功能:完成FsImage和EditLog的合并操作,减小EditLog文件大小。
EditLog和FsImage的合并操作:

5、 HDFS体系结构
主从结构
客户端向名称节点请求文件名或者数据块号,名称节点将数据块号、数据块位置发送至客户端。
客户端与数据节点通信进行数据的读写操作。HDFS集群只有一个名称节点,其带宽、计算性能会影响整个系统的性能。

HDFS命名空间管理
HDFS集群只有一个命名空间,即/ some/some /some /some… ,向Linux的文件目录结构一样。

通信协议
HDFS通信协议建立在TCP/IP基础之上。
名称节点与数据节点采用数据节点协议进行交互。
客户端与数据节点交互通过远程过程调用(RPC)

HDFS体系结构局限性
命名空间限制、性能瓶颈(原因靠名称节点)、隔离问题(一个命名空间、和一个名称节点无法做到读写权限分配等)、集群可用性(一个名称节点)

6、 HDFS的存储原理
多副本冗余存储,加快了数据传输的速率、容易检查数据错误、保证数据的可靠性。

存放策略
HDFS默认的冗余复制因子是3,每一个文件块被保存到3个地方。
(1) 如果是集群内发起的写操作,则把第1个副本放置发起写操作请求的数据节点上,实现就近写入数据,如果集群外发起写操作,则在集群内选一个磁盘空间充足且CPU不太忙的数据节点,做为第1个副本的存放位置。
(2) 第2个副本被放置在与第1个副本不同的机架的数据节点上。
(3) 第3个副本会被放置在与第1个副本相同的机架的其他节点上。
(4) 如果还有更多的副本、则继续从集群中随机选择数据节点进行存放。

读取策略
客户端请求名称节点获取文件块不同副本的存储位置,由客户端确定从哪里获取文件块。

数据复制
文件在客户端被切分成多个块,名称节点返回数据节点列表。
客户端向一个数据节点写入,同时把数据节点列表传给第一个数据节点,当第一个节点接收数据大小4KB时并像列表第二个数据接待你发起写请求,将数据写入第二个数据节点、当第二个数据节点接收到4KB时向第三个数据节点执行类似操作。最后当文件写完时,数据的复制也同时完成了。

名称节点出错补救方案
一:远程挂载到NFS上
二:运行一个第二名称节点,能够进行有限的补救(第二名称节点中由FsImage和EditLog),但还是会可能遗失拉去FsImage和EditLog后,名称节点的一系列操作。
数据节点出错补救方案
数据节点定期向名称节点发起”心跳“,没有”心跳”时,名称节点不再向其分配读写任务,且一旦发现某些块的复制因子小了,名称节点又会安排任务,进行文件块复制。
数据出错
客户端采用MD5和SHA-1校验,出错将向名称节点汇报,请求其他副本,名称节点也会定期检查块。

第4章 分布式数据库HBase

1、HBase是什么?
一个高可靠、高性能、面向列、可伸缩的分布式数据库。
2、HBase与Hadoop其他部分关系。
使用MapReduce处理海量数据,ZooKeeper作为协同服务。HDFS底层数据存储。Pig和Hive提供高级语言支持。
3、HBase与传统数据库对比。
数据类型:采用未经解释的字符串。
数据操作:行键查询、只有简单的插入、查询、删除、清空等。
存储模式:列式存储。
数据索引:行键索引。
数据维护:并不删除原来的数据。
横向可伸缩性:面向列存储。
缺陷:不支持事务、无法实现跨行原子性。
4、HBase数据模型
行键:任意字符串,最大64KB。
列族、列限定符(列名,不需要提前定义好)。
单元格,每个单元格可以存储多个版本、每个版本对应一个时间戳
事件戳:每次对单元格执行操作,HBase会隐式自动生成并存储一个时间戳。
数据坐标:[行键、列族、列限定符、时间戳]
5、概念视图与物理视图
概念视图:逻辑模型,认为规定建立。

物理视图:

在物理视图中,空的列并不会被存储为null,而是不会存储,当请求空白的单元格时返回null。

6、 面向列的存储
从严格的关系数据库角度来看,HBase并不是一个列式存储的数据库,HBase是以列族为单位进行分解的,而不是每个列都单独存储。

7、 HBase实现原理
与HDFS具有很多相似之处、有一个Master节点负责HBase表的分区信息,表被分为Region存储到多个Region服务器,Master会检测Region服务器 工作状态、负责性能均衡。客户端并不从Master获得数据,从ZooKeeper获得Region位置,从Region服务器中拉取数据。

8、 表和Region、Region的定位

9、 HBase系统架构
客户端:缓存Region位置、与Master进行RPC通信、与Region服务器RPC通信进行数据的读写。
Zookeeper服务器:通常由集群组成,每个Region服务器要到Zookeeper服务器注册,Zookeeper实时监控Region,Master通过Zookeeper感知Region服务器状态。
Master服务器:管理用户对表操作、Region服务器的负载均衡、Region分裂与合并、Region迁移(如有Region服务器故障时)
Region服务器:Region存储、向客户端提供访问接口。

10、 Region服务器工作原理

第5章 NoSQL数据库

1、 NoSQL特点
灵活的可扩展性、灵活的数据模型、与云计算紧密耦合。

2、 NoSQL与Web2.0
无法满足海量数据的管理需求、无法满足高并发的需求、无法满足高可扩展性和高可复用性的要求。
Web2.0网站系统通常不需要严格的数据库事务、并不要求严格的读写实时性、通常不包含大量复杂的SQL查询。

3、 NoSQL的四大类型
键值数据库、列族数据库、文档数据库、图数据库。

4、 NoSQL三大基石,CAP、BASE、最终一致性。
C (Consistency) :一致性,指任何一个读操作总是能够读到之前完成的写操作的结果,在分布式环境中、多点数据是一致的。
A(Availability):可用性。指快速获取数据,且可以在确定的时间内返回操作结果。
P(tolerance of network partition):分区容忍性,当出现网络分区的情况,分离的系统可以正常运行。

组合:
CA 强调一致性和可用性,可扩展性较差。
CP 强调一致性和分区容忍性,当出现网络分区的情况时,受影响的服务需要的等待数据一致,因此在等待期间就无法对外提供服务。
AP 在采用AP设计时,可以不完全放弃一致性,转而采用最终一致性。

BASE
A(atomicity)原子性:对数据的修改、要么全部执行、要么全部不执行。
C(Consistency)一致性:在事务完成时,必须是所有数据都保持一致状态。
I(Isolation) 隔离性:并发事务所作的修改必须与其他并发事务所做的改变隔离。
D(Durability) 持久性:事务完成后、对系统的影响是永久性的。

最终一致性
是弱一致性的特例,允许后续的访问操作可以暂时读不到更新后的数据,但经过一段时间后,用户可以读到更新后的数据,最终一致性也是ACID的最终目的,只要最终数据是一致的就可以了,而不是每时每刻都保持实时一致性。

第7章 MapReduce

Hadoop MapReduce是基于谷歌MapReduce的开源实现。

大规模数据集 -> 分片小数据集 -> 处理为<key,value> -> 交给Map任务 -> 输出List(<k2,v2>) -> Map Shuffle -> Reduce Shuffle -> 输入<k2,List(v2)> -> Reduce -> 输出<k3,v3>。

当Map任务全部结束时,才会开始Reduce任务。
在切分大文件时没并不是真正的切分物理文件、而是利用RecordReader记录要处理数据的位置和长度。

Shuffle过程,分为Map端的Shuffle过程、和Reduce端的Shuffle过程,Shuffle是指对Map任务输出结果进行分区,排序、合并、归并等处理并交给Reduce的过程。

Map端的Shuffle过程
输入数据和执行Map任务,Map输出结果写入缓存、缓存满了则进行溢写(分区、排序、合并) 生成多个溢写文件、当Map任务全部结束之前,溢写文件会被归并为一个大的磁盘文件。

Reduce任务从Map端的不同Map机器”领取”属于自己处理的那部分数据,然后对数据进行归并后交给Reduce处理。具有相同key的<key,value>会被发送到同一个Reduce任务。

关于溢写,提供给MapReduce的缓存的容量是有限的,默认大小100MB。随着Map任务执行,很快写满缓存区,进行溢写操作,首先对这些键值进行分区,默认的分区方式为Hash函数对key哈希。
“合并”是指将具有相同key的<key,value>的value加起来。并非所有场景都适合合并操作。
每次溢写操作都会生成一个新得溢写文件,写入溢写文件中得所有键值对都是经过分区和排序得。

“归并” ,溢写文件数量越来越多,最终在Map任务全部结束前,系统对所有溢写文件数据进行归并操作,具有相同key的键值被合并为一个键值,如<k1,v1><k1,v2><k1,v3> 会被归并为一个新的键值,<k1,<v1,v2,v3>>。JobTracker检测Map任务,当Map任务完成时,通知Reduce任务来领取数据。然后开始Reduce端的Shuffle过程。

Reduce端的Shuffle过程
从Map端读取Map任务结果,执行归并操作,,最后送给Reduce任务进行处理。
JobTracker检测Map任务,通知Reduce任务领取数据,先放置到Reduce任务机器的缓存中,同样存在溢写操作,当溢写过程启动时,具有相同key的键值对会被归并。同样存在溢写文件的合并。
经过多轮归并后得到若干个大文件,直接输入Reduce任务。

WordCount实例


MapReduce模型的关系上的标准运算
选择、投影、并、交、差、自然连接
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

第10章 Spark

以上是关于《大数据技术原理与应用》 复习笔记 (桂林电子科技大学)的主要内容,如果未能解决你的问题,请参考以下文章

电子科技大学人工智能期末复习笔记:一阶逻辑

桂林电子科技大学web前端大作业(购物车-复杂版)

大数据技术原理与应用 第三版 林子雨 期末复习大数据概述 第一章 P2

电子科技大学人工智能期末复习笔记:MDP与强化学习

电子科技大学人工智能期末复习笔记:概率与贝叶斯网络

大数据基础考试复习(考试前不停更)——《大数据技术与原理应用》