首页 百科知识 源代码分析(一八)

源代码分析(一八)

时间:2024-09-22 百科知识 版权反馈
【摘要】:我们开始来分析NameNode。相比于DataNode,NameNode比较复杂。系统中只有一个NameNode,作为系统文件目录的管理者和“inode表”。为了高可用性,系统中还存在着从NameNode。NameNode作为HDFS中文件目录和文件分配的管理者,它保存的最重要信息,就是下面两个映射:其中,文件名à数据块保存在磁盘上(持久化);但NameNode上不保存数据块àDataNode列表,该列表是通过DataNode上报建立起来的。ClientProtocol提供给客户端,用于访问NameNode。

DataNode的介绍基本告一段落。我们开始来分析NameNode。相比于DataNodeNameNode比较复杂。系统中只有一个NameNode,作为系统文件目录的管理者和“inode表”(熟悉UNIX的同学们应该了解inode)。为了高可用性,系统中还存在着从NameNode

先前我们分析DataNode的时候,关注的是数据块。NameNode作为HDFS中文件目录和文件分配的管理者,它保存的最重要信息,就是下面两个映射:

文件名à数据块

数据块àDataNode列表

其中,文件名à数据块保存在磁盘上(持久化);但NameNode上不保存数据块àDataNode列表,该列表是通过DataNode上报建立起来的。

下图包含了NameNodeDataNode往外暴露的接口,其中,DataNode实现了InterDatanodeProtocolClientDatanodeProtocol,剩下的,由NameNode实现。

mhtml:file://I:\技术文章下载\2010-4-23整理到notebook\Hadoop汇总2010-4-22\Hadoop源码分析\Hadoop<a href=源代码分析(一八)%20-%20-%20JavaEye技术网站.mht!http://caibinbupt.javaeye.com/upload/attachment/57281/3158fcba-6f4f-3e16-8fd8-0fd2a3da9343.jpg" v:shapes="图片_x0020_173">

 

ClientProtocol提供给客户端,用于访问NameNode。它包含了文件角度上的HDFS功能。和GFS一样,HDFS不提供POSIX形式的接口,而是使用了一个私有接口。一般来说,程序员通过org.apache.hadoop.fs.FileSystem来和HDFS打交道,不需要直接使用该接口。

DatanodeProtocol:用于DataNodeNameNode通信,我们已经在DataNode的分析过程中,了解部分接口,包括:register,用于DataNode注册;sendHeartbeat/blockReport/blockReceived,用于DataNodeofferService方法中;errorReport我们没有讨论,它用于向NameNode报告一个错误的Block,用于BlockReceiverDataBlockScannernextGenerationStampcommitBlockSynchronization用于lease管理,我们在后面讨论到lease时,会统一说明。

NamenodeProtocol用于从NameNodeNameNode的通信。

下图补充了接口里使用的数据的关系。

mhtml:file://I:\技术文章下载\2010-4-23整理到notebook\Hadoop汇总2010-4-22\Hadoop源码分析\Hadoop源代码分析(一八)%20-%20-%20JavaEye技术网站.mht!http://caibinbupt.javaeye.com/upload/attachment/57394/bd754368-2701-36c9-a105-0ed6f6d15944.jpg


免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈