Hadoop之HDFS研究.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hadoop之HDFS研究

Hadoop之HDFS研究 前言: 网上已经有了一些技术博客来分析Hadoop,这里的分析基于以下的技术博客,并感谢,本文的源代码分析结合了技术博客和hadoop0.19.0版本的源代码,并融入了自己的理解。汇总如下, / 侧重HDFS的分析,是我学习的重要参考资料和起点。/ 侧重MapReduce的分析,暂时还没有深入学习。 /javenstudio/ 有部分Hadoop,也有Lucene的分析。暂时还没有深入学习。 /core/docs/current/api/ hadoop的官方API说明 本文的分析以/为基础,但侧重点不同。本文分析的目标如下: 删繁就简,考虑一个最简单、能跑起来的HDFS是如何实现的,对于一些系统升级等细节不涉及。 理清系统的主要模块之间的交互关系,便于从整体上把握系统。对模块采用内外两种方式分析。先搞明白模块的外部接口,干什么用,怎么用。再考虑模块的内部是如何怎么实现的。技术博客中对模块内部是如何实现的解释比较多,本文更多的从如何使用模块的角度讲 从改进和研究的角度去看系统,重点关注有研究价值部分的代码(例如,块的放置策略,MapReduce的调度策略)实现,找到相关的代码,搞清楚修改代码需要使用哪些API,目前的实现策略是什么。 目前状况:分析了部分代码,NameNode的分析只完成了部分,很多细节还没有看明白。 整体概览 ?主要的包与功能介绍 Package Dependences tool 提供一些命令行工具,如DistCp,archive mapreduce Hadoop的Map/Reduce实现 filecache 提供HDFS文件的本地缓存,用于加快Map/Reduce的数据访问速度 fs 文件系统的抽象,可以理解为支持多种文件系统实现的统一文件访问接口 hdfs HDFS,Hadoop的分布式文件系统实现 ipc 一个简单的IPC的实现,依赖于io提供的编解码功能 参考:/blog/86306 io 表示层。将各种数据编码/解码,方便于在网络上传输。 完成对象的序列化与反序列化。 net 封装部分网络功能,如DNS,socket security 用户和用户组信息 conf 系统的配置参数 metrics 系统统计数据的收集,属于网管范畴 util 工具类 record 根据DDL(数据描述语言)自动生成他们的编解码函数,目前可以提供C++和Java http 基于Jetty的HTTP Servlet,用户通过浏览器可以观察文件系统的一些状态信息和日志 log 提供HTTP访问日志的HTTP Servlet HDFS的设计概述: NameNode的设计 维护名字空间,是HDFS中文件目录和文件分配的管理者。 保存的重要信息如下: 文件名 ———— 数据块 ,NameNode在其本地磁盘上保存为文件(持久化) 对目录树和文件名的更新——数据块, 使用操作日志来保存更新。 数据块 ———— DataNode列表 ,NameNode不存,通过DataNode上报建立起来。 一个HDFS集群上可能包含成千个DataNode节点,这些DataNode定时和NameNode通信,接受NameNode的指令。为了减轻NameNode的负担,NameNode上并不永久保存那个DataNode上有那些数据块的信息,而是通过DataNode启动时的上报,来更新NameNode上的映射表。 DataNode和NameNode建立连接以后,就会不断地和NameNode保持心跳。心跳的返回其还也包含了NameNode对DataNode的一些命令,如删除数据库或者是把数据块复制到另一个DataNode。应该注意的是:NameNode不会发起到DataNode的请求,在这个通信过程中,它们是严格的客户端/服务器架构。 DataNode当然也作为服务器接受来自客户端的访问,处理数据块读/写请求。DataNode之间还会相互通信,执行数据块复制任务,同时,在客户端做写操作的时候,DataNode需要相互配合,保证写操作的一致性。 下面我们就来具体分析一下DataNode的实现。DataNode的实现包括两部分,一部分是对本地数据块的管理,另一部分,就是和其他的实体打交道。我们先来看本地数据块管理部分。 安装Hadoop的时候,我们会指定对应的数据块存放目录,当我们检查数据块存放目录目录时,我们回发现下面有个叫dfs的目录,所有的数据就存放在dfs/data里面。 其中有两个文件,storage里存的东西是一些出错信息,貌似是版本不对…云云。in_use.lock是一个空文件,它的作用是如果需要对整个系统做排斥操作,应用应该获取它上面的一个锁。 接下来是3个目录,

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档