HDFS中的Namenode和Datanode
HDFS Architecture:
Namenode
Namenode 管理者文件系統(tǒng)的Namespace。它維護(hù)著文件系統(tǒng)樹(shù)(filesystem tree)以及文件樹(shù)中所有的文件和文件夾的元數(shù)據(jù)(metadata)。管理這些信息的文件有兩個(gè),分別是Namespace 鏡像文件(Namespace image)和操作日志文件(edit log),這些信息被Cache在RAM中,當(dāng)然,這兩個(gè)文件也會(huì)被持久化存儲(chǔ)在本地硬盤(pán)。Namenode記錄著每個(gè)文件中各個(gè)塊所在的數(shù)據(jù)節(jié)點(diǎn)的位置信息,但是他并不持久化存儲(chǔ)這些信息,因?yàn)檫@些信息會(huì)在系統(tǒng)啟動(dòng)時(shí)從數(shù)據(jù)節(jié)點(diǎn)重建。
Namenode結(jié)構(gòu)圖課抽象為如圖:
客戶端(client)代表用戶與namenode和datanode交互來(lái)訪問(wèn)整個(gè)文件系統(tǒng)??蛻舳颂峁┝艘恍┝械奈募到y(tǒng)接口,因此我們?cè)诰幊虝r(shí),幾乎無(wú)須知道datanode和namenode,即可完成我們所需要的功能。
Datanode
Datanode是文件系統(tǒng)的工作節(jié)點(diǎn),他們根據(jù)客戶端或者是namenode的調(diào)度存儲(chǔ)和檢索數(shù)據(jù),并且定期向namenode發(fā)送他們所存儲(chǔ)的塊(block)的列表。
Namenode容錯(cuò)機(jī)制
沒(méi)有Namenode,HDFS就不能工作。事實(shí)上,如果運(yùn)行namenode的機(jī)器壞掉的話,系統(tǒng)中的文件將會(huì)完全丟失,因?yàn)闆](méi)有其他方法能夠?qū)⑽挥诓煌琩atanode上的文件塊(blocks)重建文件。因此,namenode的容錯(cuò)機(jī)制非常重要,Hadoop提供了兩種機(jī)制。
***種方式是將持久化存儲(chǔ)在本地硬盤(pán)的文件系統(tǒng)元數(shù)據(jù)備份。Hadoop可以通過(guò)配置來(lái)讓Namenode將他的持久化狀態(tài)文件寫(xiě)到不同的文件系統(tǒng)中。這種寫(xiě)操作是同步并且是原子化的。比較常見(jiàn)的配置是在將持久化狀態(tài)寫(xiě)到本地硬盤(pán)的同時(shí),也寫(xiě)入到一個(gè)遠(yuǎn)程掛載的網(wǎng)絡(luò)文件系統(tǒng)。
第二種方式是運(yùn)行一個(gè)輔助的Namenode(Secondary Namenode)。 事實(shí)上Secondary Namenode并不能被用作Namenode它的主要作用是定期的將Namespace鏡像與操作日志文件(edit log)合并,以防止操作日志文件(edit log)變得過(guò)大。通常,Secondary Namenode 運(yùn)行在一個(gè)單獨(dú)的物理機(jī)上,因?yàn)楹喜⒉僮餍枰加么罅康腃PU時(shí)間以及和Namenode相當(dāng)?shù)膬?nèi)存。輔助Namenode保存著合并后的Namespace鏡像的一個(gè)備份,萬(wàn)一哪天Namenode宕機(jī)了,這個(gè)備份就可以用上了。
但是輔助Namenode總是落后于主Namenode,所以在Namenode宕機(jī)時(shí),數(shù)據(jù)丟失是不可避免的。在這種情況下,一般的,要結(jié)合***種方式中提到的遠(yuǎn)程掛載的網(wǎng)絡(luò)文件系統(tǒng)(NFS)中的Namenode的元數(shù)據(jù)文件來(lái)使用,把NFS中的Namenode元數(shù)據(jù)文件,拷貝到輔助Namenode,并把輔助Namenode作為主Namenode來(lái)運(yùn)行。
原文鏈接:http://shitouer.cn/2012/12/hdfs-namenode-datanode/
【編輯推薦】