一文讀懂HDFS分布式存儲框架分析

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

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

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

1、HDFS框架分析

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

NameNode

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

如果NameNode掛掉了,文件就會無法重組,怎么辦?有哪些容錯機制?

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

Secondary NameNode

輔助NameNode,分擔NameNode工作,緊急情況下可輔助恢復NameNode。

DataNode

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

2、HDFS文件讀寫

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

文件為什么要按照塊來存儲呢?

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

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

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

3.2.1 HDFS文件讀流程

1、向NameNode通信查詢元數(shù)據(jù)(block所在的DataNode節(jié)點),找到文件塊所在的DataNode服務器。

2、挑選一臺DataNode(就近原則,然后隨機)服務器,請求建立socket流。

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

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

3.2.2 HDFS文件寫流程

1、向NameNode通信請求上傳文件,NameNode檢查目標文件是否已存在,父目錄是否存在。

2、NameNode返回確認可以上傳。

3、client會先對文件進行切分,比如一個block塊128m,文件有300m就會被切分成3個塊,一個128m、一個128m、一個44m。請求第一個block該傳輸?shù)侥男〥ataNode服務器上。

4、NameNode返回DataNode的服務器。

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

6、client開始往A上傳第一個block,當然在寫入的時候DataNode會進行數(shù)據(jù)校驗,第一臺DataNode收到后就會傳給第二臺,第二臺傳給第三臺。

7、當一個block傳輸完成之后,client再次請求NameNode上傳第二個block的服務器。

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

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論