nn的啟動過程:
首先執行nn中的main函式
main函式的主要工作是建立乙個nn物件,並通過join方法等待其他執行緒執行結束。
createnamenode函式
首先獲取startopt,就是啟動dfs時指定的引數(如-format),啟動時會對format(hadoop一開始部署完成要進行一次格式化操作,類似磁碟的格式化)和finalize(公升級穩定後正式提交)。
之後建立nn的物件。具體的初始化工作是在initialize方法中,進行一堆安全檢查,然後建立fsnamesystem物件
this
.namesystem =
new
fsnamesystem(
this
, conf);
開始最重要的fsnamesystem的初始化,同樣初始化工作是在initialize方法中完成。完成的最重要的幾件事情,建立fsdirectory物件,載入image和edits檔案,設定安全狀態,之後啟動幾個monitor執行緒。分別監控dn的心跳、租約、block的冗餘備份數目。
可以看出fsnamesystem對於目錄結構的操作都是通過fsdirectory物件進行的。在fsdirectory中有乙個表示系統目錄根的rootdir,rootdir是inodedirectorywithquota型別,這就表明fsdirectory是作為inode(類似linux中的inode)與fsnamesystem之間的橋梁,fsdirectory封裝了inode提供了對外查詢的介面。
inode是乙個抽象類,他有兩個子類inodedirectory和inodefile。顧名思義,inodefile代表的是乙個具體的檔案,而inodedirectory代表的是乙個檔案目錄。
接著看一下inodedirectory與inodefile之間的區別。在inodefile中最重要的乙個域是
protected
blockinfo blocks =
null
;
這就是代表每個檔案所對應的blockid。而在inodedirectory中最重要的部分是
private
listchildren;
這就是乙個檔案目錄中的目錄項的集合,也就是目錄樹。
之後建立rpcsever和httpserver,具體實現可以檢視hadoop rpc部分的源**。
HDFS中NameNode的啟動過程
namenode儲存檔案系統元資料映象,namenode在記憶體及磁碟上分別存在乙份元資料映象檔案,記憶體中元資料映象保證了hdfs檔案系統檔案訪問效率,磁碟上的元資料映象保證了hdfs檔案系統的安全性。namenode在磁碟上的檔案組成 fsimage檔案 儲存檔案系統至上次checkpoint為...
四 HDFS中NameNode的啟動過程
一 hdfs中namenode的啟動過程 1 在hdfs site.xml 中設定檔案儲存路徑並指向 data 路徑,在 hadoop 安裝路徑中新建 data 目錄。2 進行 namenode 格式化,在 data 目前中生成各類目錄,並生成 fsimage 檔案。3 第一次啟動 namenode...
mysql啟動過程長 mysql啟動過程
mysql啟動過程經過以下順序 1.mysql讀取配置檔案的順序 讀取順序 etc my.cnf etc mysql my.cnf usr etc my.cnf my.cnf 2.mysql啟動方式 mysql啟動方式有三種 mysqld mysqld safe mysqld multi 主要用於多...