Module 02 HDFS架构原理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

版权所有©2015华为技术有限公司HDFS架构原理第1页版权所有©2015华为技术有限公司目标学完本课程后,您将能够:了解HDFS使用的场景了解HDFS功能与架构了解常用命令和参数第2页版权所有©2015华为技术有限公司目录1.HDFS概述2.HDFS功能与架构3.HDFS常见命令和参数第3页版权所有©2015华为技术有限公司HDFS概述HDFS(HadoopDistributedFileSystem)基于Google发布的GFS论文设计开发,其除具备其他分布式文件系统相同特性外,还有自己特有的特性:高容错:认为硬件总是不可靠的高吞吐量:为大量数据访问应用提供高吞吐量支持大文件存储:支持存储TB-PB级别的数据HDFS适合做什么大文件存储、流式数据访问HDFS不适合做什么大量小文件、随机写入、低延迟读取第4页版权所有©2015华为技术有限公司目录1.HDFS概述2.HDFS功能与架构3.HDFS常见命令和参数第5页版权所有©2015华为技术有限公司目录1.HDFS概述2.HDFS功能与架构HDFS设计目标HDFS基本系统架构HDFS架构关键设计HDFS高可靠性第6页版权所有©2015华为技术有限公司HDFS设计目标硬件失效•硬件的异常比软件的异常更加常见。•对于有上百台服务器的数据中心来说,认为总有服务器异常,硬件异常是常态。•HDFS需要监测这些异常,并自动恢复数据。流式数据访问•基于HDFS的应用仅采用流式方式读取数据。•运行在HDFS上的应用并非以通用业务为目的的应用程序•应用程序关注的是吞吐量,而非响应时间。•非POSIX标准接口的数据访问。存储数据较大•运行在HDFS的应用程序有较大的数据需要处理。•典型的文件大小为GB到TB级别。数据一致性•应用程序采用WORM(WriteOnceReadMany)的数据读写模型。•文件仅支持追加,而不允许修改。多硬件平台•HDFS易于运行不同的平台上。移动计算能力•计算和存储采用就近原则,计算离数据最近。•就近原则将有效减少网络的负载,降低网络拥塞。第7页版权所有©2015华为技术有限公司目录1.HDFS概述2.HDFS功能与架构HDFS设计目标HDFS基本系统架构HDFS架构关键设计HDFS高可靠性第8页版权所有©2015华为技术有限公司HDFS主要采用主备模式,其架构包含NameNode,DataNode,Client三个部分NameNode:NameNode用于存储、生成文件系统的元数据。运行一个实例。DataNode:DataNode用于存储实际的数据,将自己管理的数据块上报给NameNode,运行多个实例。Client:支持业务访问HDFS,从NameNode,DataNode获取数据返回给业务。多个实例,和业务一起运行。HDFS基本系统架构NameNodeClientMetadata(Name,replicas,...):/home/foo/data,3,...HDFSArchitectureClientReadDatanodesRack1Rack2MetadataopsDatanodesBlockopsBlocksBlocksReplication第9页版权所有©2015华为技术有限公司目录1.HDFS概述2.HDFS功能与架构HDFS设计目标HDFS基本系统架构HDFS架构关键设计HDFS高可靠性第10页版权所有©2015华为技术有限公司HDFS架构关键设计第11页版权所有©2015华为技术有限公司HDFS数据读取流程如下:1.业务应用调用HDFSClient提供的API打开文件。2.HDFSClient联系NameNode,获取到文件信息(数据块、DataNode位置信息)3.业务应用调用readAPI读取文件。4.HDFSClient根据从NameNode获取到的信息,联系DataNode,获取相应的数据块。(Client采用就近原则读取数据)5.HDFSClient会与多个DataNode通讯获取数据块。6.数据读取完成后,业务调用close关闭连接HDFS数据读取流程ClientnodeHDFSClientDistributedFileSystemFSDataInputStreamNameNodeNameNodeNameNodeNameNodeNameNodeNameNodeNameNodeNameNode1:open2:getblocklocation3:read4:read5:read6:close第12页版权所有©2015华为技术有限公司HDFS数据写入流程如下:1.业务应用调用HDFSClient提供的API创建文件,请求写入。2.HDFSClient联系NameNode,NameNode在元数据中创建文件节点。3.业务应用调用writeAPI写入文件。4.HDFSClient收到业务数据后,从NameNode获取到数据块编号、位置信息后,联系DataNode,并将需要写入数据的DataNode建立起流水线,完成后,客户端再通过自有协议写入数据到Datanode1,再有DataNode1复制到DataNode2,DataNode3。5.写完的数据,将返回确认信息给HDFSClient。6.所有数据确认完成后,业务调用HDFSClient关闭文件。7.业务调用close,flush后,HDFSClient联系NameNode,确认数据包写入完成,NameNode持久化元数据。HDFS数据写入流程ClientnodeHDFSClientDistributedFileSystemFSDataInputStreamNameNodeNameNodeNameNodeNameNodeNameNodeNameNodeNameNodeNameNode1:create2:create3:write4:writepacket5:read6:close5:ackpacket4455第13页版权所有©2015华为技术有限公司HDFSFederation应用场景Federation支持上层应用使用多个独立的基于NameNode/Namespace的文件系统。这些NameNode之间相互独立且不需要互相协调,各自分工管理自己的区域。解决方案一个namespace使用一个blockpool管理数据块,每个blockpool内部自治,不会与其他blockpool交流。命名空间管理:Federation中存在多个命名空间,可以使用ClientSideMountTable对命名空间划分和管理。用户价值【扩展性】支持NameNode/Namespace水平扩展,后向兼容,结构简单。【性能】文件操作的性能不再制约于单个namenode的吞吐量,支持多个namenode。【隔离性】可按照应用程序的用户和种类分离Namespacevolume,进而增强了隔离性APPHDFSNamespace-1Namespace-kNamespace-nClient-1Client-kClient-nCommonStoragePool1PoolkPoolnBlockPoolsNamespaceBlockStorageNN1NN-kNN-nNS1NS-kNS-nDatanode1Datanode2Datanodem……………第14页版权所有©2015华为技术有限公司副本距离计算公式:•Distance(Rack1/D1,Rack1/D1)=0同一台服务器的距离为0•Distance(Rack1/D1,Rack1/D3)=2同一机架不同的服务器距离为2•distance(Rack1/D1,Rack2/D1)=4不同机架的服务器距离为4副本放置策略:•第一个副本在本地机器•第二个副本在远端机架•第三个副本看之前的两个副本是否在同一机架,如果是则选择其他机架,否则选择和第一个副本相同机架的不同节点。•第四个及以上,随机选择副本存放位置数据副本机制ClientNode2Node3B3Node4Node5Node1B2Node2Node3Node4Node5Node1B4Node2Node3Node4Node5DataCenterPlacementpolicyRACK3RACK2RACK1Distance=4Distance=4B1Distance=0Distance=2D1D3D2D4D5D1D3D2D4D5D1D3D2D4D5第15页版权所有©2015华为技术有限公司元数据持久化的流程如下:1.主用NameNode接收文件系统操作请求,生成EditLog,并回滚日志,向EditLog.new中记录日志。2.备用NameNode从主用NameNode上下载FSImage,并从共享存储中读取EditLog。3.备用NameNode将日志和旧的元数据合并,生成新的元数据FSImage.ckpt4.备用NameNode将元数据上传到主用NameNode5.主用NameNode将上传的元数据进行回滚。6.循环步骤1。元数据持久化ActiveNameNode1:回滚EditlogEditlogFsimageStandbyNameNodeEditlogFsimageEditlog.newFSImage.ckptEditlogFsimageFSImage.ckpt2:从主节点获取Editlog及Fsimage(Fsimage仅在NameNode初始化时下载,后续使用本地文件)3:合并4.将新生成的Fsimage上传到主节点5.回滚Fsimage第16页版权所有©2015华为技术有限公司元数据持久化健壮机制HDFS主要目的是保证存储数据的完整性,对于各个组件的失效,做了可靠性处理。重建失效数据盘的副本数据。DataNode与NameNode之间通过心跳周期汇报数据状态,NameNode管理数据块是否上报完整,如果DataNode因硬盘损坏未上报数据块,NameNode将发起副本重建动作恢复丢失的副本。集群数据均衡HDFS架构设计了数据均衡机制,此机制保证数据在各个DataNode上存储是平均的。数据有效性保证DataNode存储在硬盘上的数据块,都有一个校验文件已之对应,在读取数据时,DataNode会校验器有效性,若校验失败,则HDFS客户端将从其他数据节点读取数据,并通知NameNode,发起副本恢复。元数据可靠性保证采用日志机制操作元数据,同时元数据存放在主备NameNode上。快照机制实现了文件系统常见的快照机制,保证数据误操作时,能及时恢复。安全模式HDFS提供独有安全模式机制,在数据节点故障,硬盘故障时,能防止故障扩散。第17页版权所有©2015华为技术有限公司HDFS架构其他关键设计要点说明统一的文件系统名字空间HDFS对外仅呈现一个统一的文件系统。统一的通讯协议:统一采用RPC方式通信。NameNode被动的接收Client,DataNode的RPC请求。空间回收机制:支持回收站机制,以及副本数的动态设置机制。数据组织:数据存储以数据块为单位,存储在操作系统文件系统之上。访问方式:提供JAVAAPI,HTTP方式,SHELL方式访问HDFS数据。第18页版权所有©2015华为技术有限公司目录1.HDFS概述2.HDFS功能与架构HDFS设计目标HDFS基本系统架构HDFS架构关键设计HDFS高可靠性第19页版权所有©2015华为技术有限公司HDFS的高可靠性(HA)架构在基本架构上增加了以下组件:ZooKeeper:分布式协调,主要用来存储HA下的状态文件,主备信息。ZK个数建议是3个(含)以上且为奇数个。NameNode主备NameNode主备模式,主提供服务,备用于合并元数据并作为主的热备。ZKFC:ZKFC(ZooKeeperFailoverController)用于控制NameNode节点的主备状态。JN:JN(JournalNode)用于共享存储Nam

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功