"hadoop namenode -format"命令的作用和影響的文件
在hadoop部署好了之後是不能馬上應用的,而是對配置的文件系統進行格式化。這裏的文件系統,在物理上還未存在,或者用網絡磁盤來描述更加合適;還有格式化,並不是傳統意義上的磁盤清理,而是一些清除與準備工作。
namemode是hdfs系統中的管理者,它負責管理文件系統的命名空間,維護文件系統的文件樹以及所有的文件和目錄的元數據,元數據的格式如下:
同時為了保證操作的可靠性,還引入了操作日誌,所以,namenode會持久化這些數據到本地。對於第一次使用HDFS時,需要執行-format命令才能正常使用namenode節點。
在namenode節點上有個重要的路徑,就是{dfs.name.dir},這個屬性在我們配置conf/hdfs-site.xml時已經設置好了,這個參數指定了文件系統鏡像存放的路徑,並且可以采用逗號分隔的方式使用多個路徑,文件系統就會復制多份到這些路徑下,如下格式:
<property> <name>dfs.name.dir</name> <value>/opt/hadoop/datalog1,/opt/hadoop/datalog2</value> </property>
分放的路徑包含一個或者多個遠程共享目錄,例如基於NFS的共享目錄。這樣當一個namenode不能工作時,可以啟用備用的namenode節點,並將備用節點的路徑同樣指向此遠程共享目錄,從而保障數據的完整性。同樣的配置也可以應用於{dfs.name.edits.dir}以實現日誌數據備份。
下面我們再看每一個{dfs.name.dir}下存放的文件,執行-format後會在文件夾下生成{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。下面說一下這些文件的具體作用:
fsimage:存儲命名空間(實際上就是目錄和文件)的元數據信息;
edits:用來存儲對命名空間操作的日誌信息,實現namenode節點的恢復;
fstime:用來存儲check point 的時間;
VERSION:存放namenode的版本信息;
/image/fsimage: 上一次提交前的/current/fsimage文件。
我在15點30分左右執行了-format命令,版本信息如下:
#Mon Nov 25 15:30:51 CST 2013
namespaceID=342829229
cTime=0
storageType=NAME_NODE
layoutVersion=-41
"hadoop namenode -format"命令的作用和影響的文件