Hadoop分析之一HDFS元数据解析

1、元数据(Metadata):维护HDFS文件系统中文件和目录的信息,分为内存元数据和元数据文件两种。NameNode维护整个元数据。

HDFS实现时,没有采用定期导出元数据的方法,而是采用元数据镜像文件(FSImage)+日子文件(edits)的备份机制。

2、Block:文件内容而言。

寻路径流程:

路径信息                         bocks[]                                   triplets[]         

Client ------------》INode---------------------》BlockInfo --------------------------》DataNode。

INode:文件的基本元素:文件和目录

BlockInfo: 文件内容对象

DatanodeDescriptor:具体存储对象。

3 、 FSImage和edits的checkPoint。FSImage有2个状态,分别是FsImage和FsImage.ckpt,后者表示正在checkpoint的过程中,上传后将会修改为FSImage文件,同理edits也有两个状态,edits和edits.new。

4、NameNode format情景分析:

遍历元数据存储目录,提示用户是否格式化?(NameNode.java里format函数)

  private static boolean format( Configuration conf ,                                   boolean isConfirmationNeeded )         throws IOException {       Collection<URI > dirsToFormat = FSNamesystem. getNamespaceDirs(conf );       Collection<URI > editDirsToFormat =                    FSNamesystem .getNamespaceEditsDirs (conf );       for( Iterator< URI> it = dirsToFormat.iterator (); it. hasNext() ;) {         File curDir = new File (it .next (). getPath()) ;         if (! curDir. exists())           continue;         if (isConfirmationNeeded ) {           System .err .print ("Re-format filesystem in " + curDir + " ? (Y or N) ");           if (! (System .in .read () == 'Y')) {             System .err .println ("Format aborted in " + curDir );             return true ;           }           while(System .in .read () != '\n') ; // discard the enter-key          }       }          FSNamesystem nsys = new FSNamesystem (new FSImage(dirsToFormat ,                                            editDirsToFormat ), conf) ;       nsys.dir.fsImage .format ();       return false;     }    

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/d03fbf46875641c90a6442239f23b244.html