摘抄:NameNode的format具體操作過程


在Hadoop的HDFS部署好了之后並不能馬上使用,而是先要對配置的文件系統進行格式化。在這里要注意兩個概念,一個是文件系統,此時的文件系統在物理上還不存在,或許是網絡磁盤來描述會更加合適;二就是格式化,此處的格式化並不是指傳統意義上的本地磁盤格式化,而是一些清除與准備工作。本文接下來將主要討論NameNode節點上的格式化。

       我們都知道,NameNode主要被用來管理整個分布式文件系統的命名空間(實際上就是目錄和文件)的元數據信息,同時為了保證數據的可靠性,還加入了操作日志,所以,NameNode會持久化這些數據(保存到本地的文件系統中)。對於第一次使用HDFS,在啟動NameNode時,需要先執行-format命令,然后才能正常啟動NameNode節點的服務。那么,NameNode的fromat命令到底做了什么事情呢?

      在NameNode節點上,有兩個最重要的路徑,分別被用來存儲元數據信息和操作日志,而這兩個路徑來自於配置文件,它們對應的屬性分別是dfs.name.dir和dfs.name.edits.dir,同時,它們默認的路徑均是/tmp/hadoop/dfs/name。格式化時,NameNode會清空兩個目錄下的所有文件,之后,會在目錄dfs.name.dir下創建文件:

 

[plain]  view plain copy
  1. {dfs.name.dir}/current/fsimage  
  2. {dfs.name.dir}/current/fstime  
  3. {dfs.name.dir}/current/VERSION  
  4. {dfs.name.dir}/image/fsimage  

 

會在目錄dfs.name.edits.dir下創建文件:

 

[plain]  view plain copy
  1. {dfs.name.edits.dir}/current/edits  
  2. {dfs.name.edits.dir}/current/fstime  
  3. {dfs.name.edits.dir}/current/VERSION  
  4. {dfs.name.edits.dir}/image/fsimage  

 

那么這些文件又是用來干什么的呢?

      在介紹這文件的用途之前,我們可以將dfs.name.dir和dfs.name.edits.dir配置成相同的目錄,這樣的話,NameNode執行格式化之后,會產生如下的文件:{dfs.name.dir}/current/fsimage、{dfs.name.dir}/current/edits、{dfs.name.dir}/current/fstime、{dfs.name.dir}/current/VERSION、{dfs.name.dir}/image/fsimage,由此可以看出上面名字相同的文件實際是一樣的,所以在這里,我建議把dfs.name.dir和dfs.name.edits.dir配置成相同的值,以來提高NameNode的效率。ok,現在就來重點的介紹一下這些文件的用途吧。

      fsimage:存儲命名空間(實際上就是目錄和文件)的元數據信息,文件結構如下:

     edits:用來存儲對命名空間操作的日志信息,實現NameNode節點的恢復;

     fstime:用來存儲元數據上一次check point 的時間;

     VERSION:用來存儲NameNode版本信息,命名空間ID(版本號),內容如下:

      /image/fsimage: 上一次提交前的/current/fsimage文件;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM