HDFS存储系统技术分析.docx

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HDFS存储系统技术分析

HDFS数据存储系统分析1. HDFS简介HDFS是Hadoop应用中的一个必不可少的一个分布式文件系统,它将海量数据分布存储在严格大集群的多台计算机上,把文件进行分块存储,块的大小(通常为?64MB)和复制的块数量(默认为3)在创建文件时由客户机决定。为实现容错自动进行分块复制。Hadoop文件系统(Hadoop Distributed File System,HDFS)和现有的分布式文件系统相似,是一个运行在普通的硬件之上的分布式文件系统,然而它与其他分布式文件系统也存在着一定的差别。HDFS具有高容错性,可以部署在低成本的硬件之上,同时HDFS放松了对POSIX的需求,使其可以以“流”的形式访问文件数据,从而提供高吞吐量地对应用程序的数据进行访问,适合大数据集的应用程序。HDFS 由一个名叫NameNode 的主节点和多个名叫DataNode 的子节点组成,是一种典型的主从式(Master/Slave)架构,这种架构方法可以通过主节点屏蔽底层的复杂结构, 并向Client 提供方便的文件目录映射。NameNode 存储着文件系统的元数据,这些元数据包括文件系统的名字空间等, 并负责管理文件的存储等服务,但实际的数据并不存放在NameNode,而是由HDFS 中的DataNode 来存放数据。HDFS的基本特征如下:( l ) 对于整个集群有单一的命名空间。(2) 文件会被分割成多个文件块,每个文件块被分配存储到数据节点上,而且根据配置会有复制的文件块来保证数据安全性。(3) 数据一致性。适合“一次写入多次读取”的模型,客户端在成功创建文件之后,才能看到文件的存在,且在任何时候只有一个写操作者。当文件创建、写入和关闭之后不能修改文件内容。(4) Hadoop,包括HDFS,非常适合在廉价机器上的分布式存储和分布式处理。它是容错的、可伸缩的、非常易于扩展。 (5) HDFS的默认配置适合于大多数安装的应用。通常情况下,只有在一个非常大规模的集群上才需要修改默认配置。(6) 支持shell命令行风格的HDFS目录交互。(7) HDFS是用java编写的,可广泛运行在多种软硬件平台上。(8) HDFS经常性地实现新的特性和改进。(9) NameNode和DataNode都内建了Web服务器,可以方便地查看集群的状态。2. HDFS体系结构HDFS体系结构作为惟一主节点的Namenode负责对文件系统树和文件、目录等元数据信息进行管理和维护,以提供统一的文件名字空间;作为从节点的数量众多的Datanode除了具备基本的存储能力外,还具有计算能力以对节点自身携带的存储资源进行管理。HDFS中,一个文件被划分成一个或多个数据块,并被分散存储在不同的Datanode上,每个数据块都可以通过Datanode之间的互相复制而具有多个备份。当客户端访问文件时,首先把相关的包含了文件文本名字的申请发送给Namenode,然后,Namenode将相关的元数据信息(主要是数据块在Datanode上的存储位置)反馈给客户端,进而 客户端直接和相应的Datanode建立连接并进行具体的文件操作。Datanode定期将自身的状态(如当前保存的文件数据块信息)提交给Namenode,并接受Namenode的管控,例如实施文件数据块的创建,删除,复制等。3. HDFS文件操作过程3.1. HDFS写文件解析HDFS写文件流程1. client通过调用DistributedFileSystem的create()方法来创建文件。2. DistributedFileSystem通过RPC调用NameNode在文件系统的名字空间里创建一个新文件,名称节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件,这个时候还没有任何块的信息。DistributedFileSystem返回FSDataOutputStream给client。FSDataOutputStream封装了一个DFSOutputStream对象,该对象负责处理datanode和namenode之间的通讯。3. 当client开始写数据的时候,DFSOutputStream把数据分成块,并写入Data queue。Data queue由Data Streamer读取,Data Streamer通知NameNode通过分配DataNode,用来存储数据块(每块默认复制3块),分配的DataNode列表形成一个管道(pipeline)。在上图中管道由三个datanode组成,这三个datanode的选择有一定的副本放置策略。 4. Data Streamer将数据块流式传输到pipeline中的第一个DataNode,第一个DataNode存储数据块并将数据块发送给pipeline中

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档