网站大量收购闲置独家精品文档,联系QQ:2885784924

第3讲:HDFS海量存储.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
目录 1、HDFS简介 2、HDFS常用操作 通过web了解Hadoop的活动 通过用浏览器和http访问jobtracker所在节点的50030端口监控jobtracker 通过用浏览器和http访问namenode所在节点的50070端口监控集群 :50030/jobtracker.jsp :50070/dfshealth.jsp 观看日志 HDFS 主要用途 提供分布式存储机制,提供可线性增长的海量存储能力 任何节点操作都可以 自动数据冗余,无须使用Raid,无须另行备份 为进一步分析计算提供数据基础 HDFS设计基础与目标 硬件错误是常态。因此需要冗余 流式数据访问。即数据批量读取而非随机读写,Hadoop擅长做的是数据分析而不是事务处理 大规模数据集 简单一致性模型。为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,即是文件一经写入,关闭,就再也不能修改 程序采用?数据就近?原则分配节点执行 HDFS体系结构 NameNode DataNode 事务日志 映像文件 SecondaryNameNode Namenode 管理文件系统的命名空间 记录每个文件数据块在各个Datanode上的位置和副本信息 协调客户端对文件的访问 记录命名空间内的改动或空间本身属性的改动 nNamenode使用事务日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射,文件属性等 VERSION文件是java properties文件,保存了HDFS的版本号。 layoutVersion是一个负整数,保存了HDFS的持续化在硬盘上的数据结构的格式版本号。 namespaceID是文件系统的唯一标识符,是在文件系统初次格式化时生成的。 cTime此处为0 storageType表示此文件夹中保存的是元数据节点的数据结构。 fsimage文件,也即命名空间映像文件,是内存中的元数据在硬盘上的checkpoint,它是一种序列化的格式,并不能够在硬盘上直接修改。 当文件系统客户端(client)进行写操作时,首先把它记录在修改日志中(edit log) Datanode 读取数据流程 客户端要访问HDFS中的一个文件 首先从namenode获得组成这个文件的数据块位置列表 根据列表知道存储数据块的datanode 访问datanode获取数据 Namenode并不参与数据实际传输 读过程图解 写入数据流程 客户端请求namenode创建新文件 客户端将数据写入DFSOutputStream 建立pipeline依次将目标数据块写入各个datanode,建立多个副本 写过程图解 HDFS的可靠性 冗余副本策略 机架策略 心跳机制 安全模式 校验和 回收站 元数据保护 快照机制 冗余副本策略 可以在hdfs-site.xml中设置复制因子指定副本数量 所有数据块都有副本 Datanode启动时,遍历本地文件系统,产生一份hdfs数据块和本地文件的对应关系列表(blockreport)汇报给namenode 副本因子参数 机架策略 集群一般放在不同机架上,机架间带宽要比机架内带宽要小 HDFS的?机架感知? 一般在本机架存放一个副本,在其它机架再存放别的副本,这样可以防止机架失效时丢失数据,也可以提高带宽利用率 RackAware.py #!/usr/bin/python #-*-coding:UTF-8 -*- import sys rack = {hadoop-node-31:rack1, hadoop-node-32:rack1, hadoop-node-49:rack2, hadoop-node-50:rack2, hadoop-node-51:rack2, 1:rack1, 2:rack1, 9:rack2, 0:rack2, 1:rack2, } if __name__==__main__: print / +rack.get(sys.argv[1],rack0) core-site.xml配置文件 property name/name value/opt/modules/hadoop/hadoop-1.0.3/bin/RackAware.py/value !--机架感知脚本路径-- /property property nametopology.script.number.args/name value20/value !--机架服务器数量,由于我写了20个,所以这里写20-- /property 然后重启hadoop的namenode和jobtra

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档