一文讀懂HDFS分布式存儲(chǔ)框架分析

挖礦狂人
HDFS是一套基于區(qū)塊鏈技術(shù)的個(gè)人的數(shù)據(jù)存儲(chǔ)系統(tǒng),利用無處不在的私人PC存儲(chǔ)空間及便捷的網(wǎng)絡(luò)為個(gè)人提供數(shù)據(jù)加密存儲(chǔ)服務(wù),將閑置的存儲(chǔ)空間利用起來,服務(wù)于正處于爆發(fā)期的個(gè)人數(shù)據(jù)存儲(chǔ)市場(chǎng)。

HDFS是一套基于區(qū)塊鏈技術(shù)的個(gè)人的數(shù)據(jù)存儲(chǔ)系統(tǒng),利用無處不在的私人PC存儲(chǔ)空間及便捷的網(wǎng)絡(luò)為個(gè)人提供數(shù)據(jù)加密存儲(chǔ)服務(wù),將閑置的存儲(chǔ)空間利用起來,服務(wù)于正處于爆發(fā)期的個(gè)人數(shù)據(jù)存儲(chǔ)市場(chǎng)。

HDFS屬于什么結(jié)構(gòu)體系?

1、HDFS框架分析

HDFS是Master和Slave的主從結(jié)構(gòu)。主要由Name-Node、Secondary NameNode、DataNode構(gòu)成。

NameNode

管理HDFS的名稱空間和數(shù)據(jù)塊映射信存儲(chǔ)元數(shù)據(jù)與文件到數(shù)據(jù)塊映射的地方。

如果NameNode掛掉了,文件就會(huì)無法重組,怎么辦?有哪些容錯(cuò)機(jī)制?

Hadoop可以配置成HA即高可用集群,集群中有兩個(gè)NameNode節(jié)點(diǎn),一臺(tái)active主節(jié)點(diǎn),另一臺(tái)stan-dby備用節(jié)點(diǎn),兩者數(shù)據(jù)時(shí)刻保持一致。當(dāng)主節(jié)點(diǎn)不可用時(shí),備用節(jié)點(diǎn)馬上自動(dòng)切換,用戶感知不到,避免了NameNode的單點(diǎn)問題。

Secondary NameNode

輔助NameNode,分擔(dān)NameNode工作,緊急情況下可輔助恢復(fù)NameNode。

DataNode

Slave節(jié)點(diǎn),實(shí)際存儲(chǔ)數(shù)據(jù)、執(zhí)行數(shù)據(jù)塊的讀寫并匯報(bào)存儲(chǔ)信息給NameNode。

2、HDFS文件讀寫

文件按照數(shù)據(jù)塊的方式進(jìn)行存儲(chǔ)在DataNode上,數(shù)據(jù)塊是抽象塊,作為存儲(chǔ)和傳輸單元,而并非整個(gè)文件。

文件為什么要按照塊來存儲(chǔ)呢?

首先屏蔽了文件的概念,簡(jiǎn)化存儲(chǔ)系統(tǒng)的設(shè)計(jì),比如100T的文件大于磁盤的存儲(chǔ),需要把文件分成多個(gè)數(shù)據(jù)塊進(jìn)而存儲(chǔ)到多個(gè)磁盤;為了保證數(shù)據(jù)的安全,需要備份的,而數(shù)據(jù)塊非常適用于數(shù)據(jù)的備份,進(jìn)而提升數(shù)據(jù)的容錯(cuò)能力和可用性。

數(shù)據(jù)塊大小設(shè)置如何考慮?

文件數(shù)據(jù)塊大小如果太小,一般的文件也就會(huì)被分成多個(gè)數(shù)據(jù)塊,那么在訪問的時(shí)候也就要訪問多個(gè)數(shù)據(jù)塊地址,這樣效率不高,同時(shí)也會(huì)對(duì)NameNode的內(nèi)存消耗比較嚴(yán)重;數(shù)據(jù)塊設(shè)置得太大的話,對(duì)并行的支持就不太好了,同時(shí)系統(tǒng)如果重啟需要加載數(shù)據(jù),數(shù)據(jù)塊越大,系統(tǒng)恢復(fù)就會(huì)越長(zhǎng)。

3.2.1 HDFS文件讀流程

1、向NameNode通信查詢?cè)獢?shù)據(jù)(block所在的DataNode節(jié)點(diǎn)),找到文件塊所在的DataNode服務(wù)器。

2、挑選一臺(tái)DataNode(就近原則,然后隨機(jī))服務(wù)器,請(qǐng)求建立socket流。

3、DataNode開始發(fā)送數(shù)據(jù)(從磁盤里面讀取數(shù)據(jù)放入流,以packet為單位來做校驗(yàn))。

4、客戶端已packet為單位接收,現(xiàn)在本地緩存,然后寫入目標(biāo)文件,后面的block塊就相當(dāng)于是append到前面的block塊最后合成最終需要的文件。

3.2.2 HDFS文件寫流程

1、向NameNode通信請(qǐng)求上傳文件,NameNode檢查目標(biāo)文件是否已存在,父目錄是否存在。

2、NameNode返回確認(rèn)可以上傳。

3、client會(huì)先對(duì)文件進(jìn)行切分,比如一個(gè)block塊128m,文件有300m就會(huì)被切分成3個(gè)塊,一個(gè)128m、一個(gè)128m、一個(gè)44m。請(qǐng)求第一個(gè)block該傳輸?shù)侥男〥ataNode服務(wù)器上。

4、NameNode返回DataNode的服務(wù)器。

5、client請(qǐng)求一臺(tái)DataNode上傳數(shù)據(jù),第一個(gè)DataNode收到請(qǐng)求會(huì)繼續(xù)調(diào)用第二個(gè)DataNode,然后第二個(gè)調(diào)用第三個(gè)DataNode,將整個(gè)通道建立完成,逐級(jí)返回客戶端。

6、client開始往A上傳第一個(gè)block,當(dāng)然在寫入的時(shí)候DataNode會(huì)進(jìn)行數(shù)據(jù)校驗(yàn),第一臺(tái)DataNode收到后就會(huì)傳給第二臺(tái),第二臺(tái)傳給第三臺(tái)。

7、當(dāng)一個(gè)block傳輸完成之后,client再次請(qǐng)求NameNode上傳第二個(gè)block的服務(wù)器。

HDFS致力于用全新的技術(shù)解決方案、商業(yè)思維、經(jīng)濟(jì)模型建立一套的滿足現(xiàn)有用戶個(gè)人隱私數(shù)據(jù)、商業(yè)數(shù)據(jù)、可信數(shù)據(jù)的存儲(chǔ)需求的全新數(shù)據(jù)存儲(chǔ)解決方案。這就是HDFS數(shù)據(jù)分布式存儲(chǔ)的整體結(jié)構(gòu)。

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無評(píng)論