Hadoop分析之一HDFS元数据解析(4)

  public void format () throws IOException {      this. layoutVersion = FSConstants .LAYOUT_VERSION ;      this. namespaceID = newNamespaceID ();      this. cTime = 0L ;      this. checkpointTime = FSNamesystem .now ();      for (Iterator <StorageDirectory > it =                             dirIterator (); it. hasNext() ;) {        StorageDirectory sd = it .next ();        format (sd );      }    }    

对内存镜像写入元数据备份目录。FSImage的format方法会遍历所有的目录进行备份。如果是FSImage的文件目录,则调用saveFSImage保存FSImage,如果是Edits,则调用editLog.createEditLogFile,最后调用sd.write方法创建fstime和VERSION文件。VERSION文件通常最后写入。

  void format(StorageDirectory sd ) throws IOException {       sd.clearDirectory (); // create currrent dir        sd.lock ();       try {         saveCurrent (sd );       } finally {         sd .unlock ();       }       LOG.info ("Storage directory " + sd. getRoot()                + " has been successfully formatted.");     }    

最后分析一下元数据应用的场景:
1、格式化时。
2、Hadoop启动时。
3、元数据更新操作时。
4、如果NameNode与Secondary NameNode、Backup Node或checkpoint Node配合使用时,会进行checkPoint操作。

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

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