大数据存储技术大数据基础-ppt课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《大数据存储技术大数据基础-ppt课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 存储 技术 基础 ppt 课件
- 资源描述:
-
1、第第3章章 大数据存储技术大数据存储技术大数据项目组大数据项目组2018年7月2目录目录理解HDFS分布式文件系统 NoSQL数据库数据库 Hadoop的安装和配置的安装和配置 HDFS文件管理文件管理 Hbase的安装和配置的安装和配置Hbase的使用的使用精品资料 你怎么称呼老师? 如果老师最后没有总结一节课的重点的难点,你是否会认为老师的教学方法需要改进? 你所经历的课堂,是讲座式还是讨论式? 教师的教鞭 “不怕太阳晒,也不怕那风雨狂,只怕先生骂我笨,没有学问无颜见爹娘 ” “太阳当空照,花儿对我笑,小鸟说早早早”5HDFS简介HDFS文件系统的特点文件系统的特点:1.存储数据较大:运行
2、在HDFS的应用程序有较大的数据处理要求,或存储从GB到TB级的超大文件。2.支持流式数据访问:HDFS放宽了可移植操作系统接口(POSIX)的要求,可以以流的形式访问文件系统中的数据。3.支持多硬件平台:Hadoop可以运行在廉价、异构的商用硬件集群上,并且在HDFS设计时充分考虑了数据的可靠性、安全性及高可用性,以应对高发的节点故障问题。分布式文件系统HDFS(Hadoop Distributed )是Hadoop核心子项目,为Hadoop提供了一个综合性的文件系统抽象,并实现了多类文件系统的接口。HDFS基于流式数据访问、存储和处理超大文件,并运行于商用硬件服务器上。6HDFS简介4.数
3、据一致性高:应用程序采用“一次写入,多次读取”的数据访问策略,支持追加,不支持多次修改,降低了造成数据不一致性的可能性。5.有效预防硬件失效:通常,硬件异常比软件异常更加常见,对于具有上百台服务器的数据中心而言,硬件异常是常态,HDFS的设计要有效预防硬件异常,并具有自动恢复数据的能力。6.支持移动计算:计算与存储采取就近的原则,从而降低网络负载,减少网络拥塞。7HDFS的局限性HDFS在处理一些特定问题上也存在着一定的局限性局限性,并不适用所有情况,主要表现在以下三个方面:1.不适合低延迟的数据访问:因为HDFS是为了处理大型数据集任务,主要针对高数据吞吐设计的,会产生高时间延迟代价。2.无
4、法高效地存储大量小文件:为了快速响应文件请求,元数据存储在主节点的内存中,文件系统所能存储的文件总数受限于NameNode的内存容量。小文件数量过大,容易造成内存不足,导致系统错误。3.不支持多用户写入以及任意修改文件:在HDFS中,一个文件同时只能被一个用户写入,而且写操作总是将数据添加在文件末尾,并不支持多个用户对同一文件的写操作,也不支持在文件的任意位置进行修改。8HDFS的体系结构HDFS的存储策略是把大数据文件分块并存储在不同的计算机节点(Nodes),通过NameNode管理文件分块存储信息(即文件的元信息)。下图给出了HDFS的体系结构图。HDFS体系结构HDFS采用了典型的Ma
5、ster/Slave系统架构,一个HDFS集群通常包含一个NameNode节点和若干个DataNodes节点。一个文件被分成了一个或者多个数据块,并存储在一组DataNode上,DataNode节点可分布在不同的机架。在NameNode的统一调度下,DataNode负责处理文件系统客户端的读/写请求,完成数据块的创建、删除和复制。9HDFS集群1.NameNode和DataNode HDFS采用主从结构存储数据,NameNode节点负责集群任务调度,DataNode负责执行任务和存储数据块。NameNode管理文件系统的命名空间,维护着整个文件系统的文件目录树以及这些文件的索引目录。这些信息以
6、两种形式存储在本地文件系统中,一种是命名空间镜像,一种是编辑日志。2.数据块 数据块是磁盘进行数据读/写操作的最小单元。文件以块的形式存储在磁盘中,文件系统每次都能操作磁盘数据块大小整数倍的数据。HDFS中的数据块的大小,影响到寻址开销。数据块越小,寻址开销越大。传输一个由多个数据块组成的文件的时间取决于磁盘传输速率,用户必须在数据块大小设置上做出优化选择。HDFS系统当前默认数据块大小为128MB。10HDFS集群HDFS作为一个分布式文件系统,使用抽象的数据块具有以下优势优势:(1)通过集群扩展能力可以存储大于网络中任意一个磁盘容量的任意大小文件;(2)使用抽象块而非整个文件作为存储单元,
7、可简化存储子系统,固定的块大小可方便元数据和文件数据块内容的分开存储;(3)便于数据备份和数据容错提高系统可用性。HDFS默认将文件块副本数设定为3份,分别存储在集群不同的节点上。当一个块损坏时,系统会通过NameNode获取元数据信息,在其他机器上读取一个副本并自动进行备份,以保证副本的数量维持在正常水平11HDFS集群3.机架感知策略 数据副本存储示意图大规模Hadoop集群节点分布在不同的机架上,同一机架上节点往往通过同一网络交换机连接,在网络带宽方面比跨机架通信有较大优势;但若某一文件数据块同时存储在同一机架上,可能由于电力或网络故障,导致文件不可用。HDFS采用机架感知技术来改进数据
8、的可靠性、可用性和网络带宽的利用率。12HDFS集群 通过机架感知,NameNode可确定每个DataNode所属的机架ID,HDFS会把副本放在不同的机架上。 如上页的图所示,第一个副本B1在本地机器,第二个副本B2在远端机架,第三个副本B3看之前的两个副本是否在同一机架,如果是则选择其他机架,否则选择和第一个副本B1相同机架的不同节点,第四个及以上,随机选择副本存放位置。 HDFS系统的机架感知策略的优势优势是防止由于某个机架失效导致数据丢失,并允许读取数据时充分利用多个机架的带宽。HDFS会尽量让读取任务去读取离客户端最近的副本数据以减少整体带宽消耗,从而降低整体的带宽延时。13HDFS
9、集群对于副本距离的计算公式,HDFS采用如下约定:(1)Distance(Rack 1/D1 Rack1/D1)= 0 # 同一台服务器的距离为0(2)Distance(Rack 1/D1 Rack1/D3)= 2 # 同机架不同服务器距离为2(3)Distance(Rack 1/D1 Rack2/D1)= 4 # 不同机架服务器距离为4其中,Rack1、Rack2表示机柜标识号,D1、D2、D3表示所在机柜中的DataNode节点主机的编号。即同一主机的两个数据块的距离为0;同一机架不同主机上的两个数据块的距离为2;不同机架主机上的数据块距离为4。通过机架感知,处于工作状态的HDFS总是设法
10、确保数据块的3个副本(或更多副本)中至少有2个在同一机架,至少有1个处在不同机架(至少处在两个机架上)。14HDFS集群4.安全模式 安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。NameNode主节点启动后,HDFS首先进入安全模式,DataNode在启动时会向NameNode汇报可用的数据块状态等。当整个系统达到安全标准时,HDFS自动离开安全模式。离开安全模式的基本要求离开安全模式的基本要求: 副本数达到要求的数据块占系统总数据块的最小百分比(还需要满足其他条件)。默认为0.999f,也就是说符合最小副本数要求的数据块占比超过
11、99.9%时,并且其他条件也满足才能离开安全模式。 NameNode退出安全模式状态,然后继续检测,确认有哪些数据块的副本没有达到指定数目,并复制这些数据块到其他DataNode上。15HDFS集群5.文件安全性 为了保证文件的安全性,HDFS提供备份NameNode元数据和增加Secondary NameNode节点两种基本方案两种基本方案。(1)备份NameNode上持久化存储的元数据文件,然后再同步地将其转存到其他文件系统中,一种通常的实现方式是将NameNode中的元数据转存到远程的网络文件共享系统NFS中。(2)在系统中同步运行一个Secondary NameNode节点,作为二级N
12、ameNode去周期性地合并编辑日志中的命名空间镜像。Secondary NameNode的运行通常需要大量的CPU和内存去做合并操作,建议将其安装在与NameNode节点不同的其他单独的服务器上,它会存储合并后的命名空间镜像,并在NameNode宕机后作为替补使用,以便最大限度地减少文件的损失。由于Secondary NameNode的同步备份总会滞后于NameNode,依然存在数据损失的风险。16HDFS集群6.元数据持久化元数据持久化过程HDFS元数据(描述文件)持久化由FSimage和Editlog两个文件组成,随着HDFS运行进行持续更新,元数据持久化的过程如左图所示。17HDFS集
13、群元数据持久化的过程元数据持久化的过程:首先,主用NameNode(即图中的Active NameNode)接收文件系统操作请求,生成EditLog,并回滚日志,向EditLog.new中记录日志;第二步,备用NameNode(即图中的Standby NameNode)从主用NameNode上下载FSimage,并从共享存储中读取EditLog;第三步,备用NameNode将日志和旧的元数据合并,生成新的元数据FSImage.ckpt;第四步,备用NameNode将元数据上传到主用NameNode;第五步,主用NameNode将上传的元数据进行回滚;最后,循环第一步。18HDFS中的数据流Ja
14、va抽象类org.apache.hadoop.fs.定义了Hadoop的一个文件系统接口。该类是一个抽象类,通过以下两个方法可以创建实例: public static (Configuration conf) throws IOException public static (URI uri, Configuration conf) throws IOException 这两个方法均要求传递一个Configuration的对象实例,Configuration对象可以理解为描述Hadoop集群配置信息的对象。创建一个Configuration对象后,可调用Configuration.get()获
15、取系统配置键值对属性。用户在得到一个Configuration对象之后就可以利用该对象新建一个对象。19HDFS中的数据流Hadoop抽象文件系统主要提供的方法抽象文件系统主要提供的方法可以分为两部分:一部分用于处理文件和目录相关的事务;另一部分用于读/写文件数据。处理文件和目录主要是指创建文件/目录、删除文件/目录等操作;读/写数据文件主要是指读取/写入文件数据等操作。这些操作与Java的文件系统API类似,如(Path f, FsPermission permission)方法在对象所代表的文件系统中创建目录,Java.io.()也是创建目录的方法。(Path f)方法用于删除文件或目录,
16、Java.io.()方法也用于删除文件或目录。20文件的读取客户端从HDFS中读取文件的流程如图下图所示。客户端从HDFS中读取数据流程(1)首先,客户端通过调用对象中的open()函数打开需要读取的文件。对于HDFS来说,是分布式文件系统的一个实例,对应着图中的第一步。21文件的读取(2)然后Distributed通过远程过程调用(RPC)调用NameNode,以确定文件起始块的位置。对于每一个块,NameNode返回存有该块副本的DataNode的地址。这些返回的DataNode会按照Hadoop定义的集群网络拓扑结构计算自己与客户端的距离并进行排序,就近读取数据。(3)HDFS会向客户端
17、返回一个支持文件定位的输入流对象FSDataInputStream,用于给客户端读取数据。FSDataInputStream类转而封装DFSInputStream对象,该对象管理着NameNode和DataNode之间的I/O。当获取到数据块的位置后,客户端就会在这个输入流之上调用read()函数。存储着文件起始块DataNode的地址的DFSInputStream对象随即连接距离最近的DataNode。22文件的读取(4)连接完成后,DFSInputStream对象反复调用read()函数,将数据从DataNode传输到客户端,直到这个块全部读取完毕。(5)当最后一个数据块读取完毕时,DFS
18、InputStream会关闭与该DataNode的连接,然后寻找下一个数据块距离客户端最近的DataNode。客户端从流中读取数据时,块是按照打开DFSInputStream与DataNode新建连接的顺序读取的。(6)一旦客户端完成读取,就会对FSDataInputStream调用close()。在读取数据的时候,如果DFSInputStream与DataNode通信错误,会尝试读取该块最近邻的其他DataNode节点上的数据块副本,同时也会记住发生故障的DataNode,以保证以后不会去读取该节点上后续块。收到数据块以后,DFSInputStream也会通过校验和确认从DataNode发来
19、的数据的完整性。23文件的写入客户端在HDFS中写入一个新文件的数据流过程如下图所示。客户端从HDFS中读取数据流程(1)客户端通过对Distributed对象调用create()函数创建一个文件。(2)Distributed对NameNode创建一个RPC调用,在文件系统的命名空间中新建一个文件,此时该文件还没有相应的数据块,即还没有相关的DataNode与之关联。24文件的写入(3)NameNode会执行各种不同的检查以确保这个新文件在文件系统中不存在,并确保客户端有创建文件的权限。如果创建成功,则Distributed向客户端返回一个FSDataOutputStream对象,客户端开始借
20、助这个对象向HDFS写入数据。(4)当客户端写入数据时,DFSOutPutStream会将文件分割成多个数据包,并写入一个数据队列中。DataStreamer负责处理数据队列,会将这些数据包放入到数据流中,并向NameNode请求为新的文件分配合适的DataNode存放副本,返回的DataNode列表形成一个管道。(5)DFSOutputStream同时维护着一个内部数据包队列来等待DataNode返回确认信息,被称为确认队列。只有当管道中所有的DataNode都返回了写入成功的信息后,该数据包才会从确认队列中删除。(6)客户端成功完成数据写入操作以后,对数据流调用close()函数,该操作将
21、剩余的所有数据包写入DataNode管道,并连接NameNode节点,等待通知确认信息。25文件的写入如果在数据写入期间DataNode发送故障发送故障,HDFS就会执行以下操作: 首先关闭管道,任何在确认队列中的数据包都会被添加到数据队列的前端,以保证管道中失败的DataNode的数据包不会丢失。当前存放在正常工作的DataNode上的数据块会被制定一个新的标识,并和NameNode进行关联,以便故障DataNode在恢复后可以删除存储的部分数据块。 然后,管道会把失败的DataNode删除,文件会继续被写到另外两个DataNode中。 最后,NameNode会注意到现在的数据块副本没有达到
22、配置属性要求,会在另外的DataNode上重新安排创建一个副本,后续的数据块继续正常接收处理。26一致性模型 文件系统的一致性模型描述了文件读/写的数据可见性。文件被创建之后,当前正在被写入的块,其他读取者是不可见的。不过,HDFS提供一个sync()方法来强制所有的缓存与数据节点同步。在sync()返回成功后,HDFS能保证文件中直至写入的最后的数据对所有读取者都是可见且一致的。 HDFS的文件一致性模型与具体设计应用程序的方法有关。如果不调用sync(),一旦客户端或系统发生故障,就可能失去一个块的数据。所以,用户应该在适当的地方调用sync(),例如,在写入一定的记录或字节之后。 尽管s
23、ync()操作被设计为尽量减少HDFS负载,但仍有开销,用户可通过不同的sync()频率来衡量应用程序,最终在数据可靠性和吞吐量找到一个合适的平衡。27数据完整性 I/O操作过程中难免会出现数据丢失或脏数据,数据传输的量越大,出错的机率越高。比较传输前后校验和是最为常见的错误校验方法,例如,CRC32循环冗余检查是一种数据传输检错功能,对数据进行多项式计算32位的校验和,并将得到的校验和附在数据的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 HDFS也通过计算出CRC32校验和的方式保证数据完整性。HDFS会在每次读写固定字节长度时就计算一次校验和。这个固定的字节长度可由i
24、o.bytes.per.checksum指定,默认是512字节。HDFS每次读的时候也再计算并比较校验和。DataNode在收到客户端的数据或者其他副本传过来的数据时会校验数据的校验和。 HDFS数据流中,客户端写入数据到HDFS时,在管道的最后一个DataNode会去检查这个校验和,如果发现错误,就会抛出ChecksumException异常到客户端。 客户端从DataNode读数据的时候也要检查校验和,而且每个DataNode还保存检查校验和的日志,客户端的每一次校验都会记录到日志中。28数据完整性除了读写操作会检查校验和以外,DataNode通过DataBlockScanner进程定期校
25、验存在在它上面的数据块,预防诸如位衰减引起硬件问题导致的数据错误。如果客户端发现有数据块出错,主要进行以下步骤恢复数据块:(1)客户端在抛出ChecksumException之前会把坏的数据块和该数据块所在的DataNode报告给NameNode;(2)NameNode把这个数据块标记为已损坏,这样NameNode就不会把客户端指向这个数据块,也不会复制这个数据块到其他的DataNode;(3)NameNode会把一个好的数据块复制到另外一个DataNode;(4)NameNode把损坏的数据块删除掉。29目录目录理解HDFS分布式文件系统NoSQL数据库数据库 Hadoop的安装和配置的安装
展开阅读全文