HDFS采用Master/Slave架构。NameNode就是HDFS的Master架构。HDFS系统包括一个NameNode组件,主要负责HDFS文件系统的管理工作,具体包括名称空间(namespace)管理,文件Block管理。
NameNode提供的是始终被动接收服务的server。
NameNode主要有三类协议接口:
ClientProtocol接口,提供给客户端,用于访问NameNode。它包含了文件的HDFS功能。和GFS一样. HDFS不提供POSIX形式的接口,而使用了一个私有接口。
DataNodeProtocol接口,用于从DataNode向NameNode通信。
NameNodeProtocol接口,用于从NameNode到NameNode的通信。
在HDFS内部,一个文件被分成一个或多个Block,这些Block存储在DataNode集合里,NameNode就负责管理文件Block的所有元数据信息,
这些元数据信息主要为:
“文件名 -> 数据块‘’映射
“数据块 -> DataNode列表”映射
其中,"文件名 -> 数据块"保存在磁盘上进行持久化存储,需要注意的是NameNode上不保存‘’数据块 -> DataNode列表”映射,该列表是通过DataNode上报给NameNode建立起来的。NameNode执行文件系统的名称空间(namespace)操作,例如打开、关闭、重命名文件和目录,同时决定文件数据块到具体DataNode节点的映射。
和NameNode最相关的还有一个概念就是Secondary NameNode,其主要是定时对NameNode的数据snapshots进行备份,这样可尽量降低NameNode崩溃之后导致数据丢失的风险,其所做的工作就是从NameNode获得fsimage和edits后把两者重新合并发给NameNode,这样,既能减轻NameNode的负担又能安全地备份,一旦HDFS的Master架构失效,就可以借助Secondary NameNode进行数据恢复。
本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/5081112.html,如需转载请自行联系原作者