HDFS原理及适用场景.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HDFS原理及适用场景(V1.0)北京神州数码思特奇信息技术股份有限公司二〇一一年十月文档信息文档名称HDFS原理及适用场景电子文档HDFS原理及适用场景文件状态■草 稿 □ 正式发布□正在修改编 写 人zhouming日 期2011年10月27日校 对 人日 期年月日审 核 人日 期年月日批 准 人日 期年月日变更记录变更序号变更原因变更页码变更前版本号变更后版本号更改人批准人生效日期备注1文档建立1.01.0zhouming2011-10-2723456概述HDFS是Hadoop技术框架中的分布式文件系统。行使部署在多台独立物理机器上的文件进行管理功能。本文重点介绍HDFS适用的场景,MapReduce的读写大致过程,核心FSNameSystem层次结构以及根据一个示例来介绍HDFS在web开发中的应用。HDFS特点及适用场景2.1HDFS特点[1] 适合运行在通用硬件,错误检测和快速、自动的恢复能力好[2] 支持大文件存储,能提供比较高的数据传输带宽与数据访问吞吐量[3]计算环境移动到数据存储的地方,而不是把数据传输到计算环境运行的地方,有效减少网络的拥塞、提高系统的吞吐量。2.2HDFS适用场景[1] 网站用户行为分析[2]生态系统数据分析[3]气象数据分析2.3HDFS 不适用场景[1]低时间延迟数据访问的应用。例如几十毫秒范围,原因:hdfs是为高数据吞吐量应用优化的,这样就造成可能会以高时间延迟为代价[2]大量小文件原因: namenode将文件系统的元数据存储在内存中,因此文件系统所能存储的文件总数受限于namecode内存容量。根据经验,每个文件,目录和数据块的存储信息大约占150字节,如果一百万个文件,且每个文件占一个数据块,那至少需要300MB的内存,但是如果存储十亿个文件,那么需要的内存将是非常大的[3]多用户写入,任意修改文件:现在hdfs文件可能只有一个writer,而且写操作总是写在文件的末尾.3HDFS框架结构和读写简析HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进行数据块的创建、删除和复制。3.1.1?Namenode和DatanodeNamenode作用:管理文件系统的命名空间,(比如打开,关闭,重命名)维护文件系统树和整棵树内所有的文件和目录,确定文件块和DataNode的映射。Datanode作用:记录每个文件中各个块所在的数据节点信息。通知执行块的创建,删除和复制操作。3.1.2HDFS文件读取简析流程图如下:前提:一个 A.txt文件,A.txt文件的内容分别被拆分成B.txt,C.txt两块内容,B.txt文件被备份在datanode1,datanode2,datanode3中,C.txt被备份在datanode4,datanode5,datanode6中。场景:用户要读取A.txt文件内容。执行过程:用户在客户端发起请求,HDFS接受请求后使用DistributedFileStytem调用namenode,从而确定用户请求文件块的对应位置,namenode返回存有请求文本块副本的datanode地址,这些地址是根据datanode与客户端的距离排序过的。封装datanode地址的结果放在FSDataInputStream中返回给客户端,(注,FSDataInputStream对象封装DFSInputStream对象,此对象负责管理datanode和namenode的I/O).然后客户端对流文件持续进行read()操作,DFSDataInputStream会连接距离客户端最近的datanode,比如此时datanode1离客户端最近,那么读取datanode1的数据并返回到客户端,当读取到块的末端时,FSDataInputStream关闭datanode1的连接,并读取存放副本2.txt的离客户端最近的datanode中的数据,当客户端完成读取,调用FSDataInputStream的close()方法。从而用户完成了读取A.txt的操作。出现异常情

文档评论(0)

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

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

1亿VIP精品文档

相关文档