HDFS架構設計

jopen 11年前發布 | 26K 次閱讀 HDFS 軟件架構

HDFS是一個具有高度容錯性的分布式文件系統,適合部署在廉價的機器上,它具有以下幾個特點:

1)適合存儲非常大的文件

2)適合流式數據讀取,即適合“只寫一次,讀多次”的數據處理模式

3)適合部署在廉價的機器上

但HDFS不適合以下場景(任何東西都要分兩面看,只有適合自己業務的技術才是真正的好技術):

1)不適合存儲大量的小文件,因為受Namenode內存大小限制

2)不適合實時數據讀取,高吞吐量和實時性是相悖的,HDFS選擇前者

3)不適合需要經常修改數據的場景

 

20130608135911968.jpeg

 

HDFS的架構如上圖所示,總體上采用了Master/Slave的架構,主要有以下4個部分組成:

1、Client

2、NameNode

整個HDFS集群只有一個NameNode,它存儲整個集群文件分別的元數據信息。這些信息以fsimage和editlog兩個文件存儲在本地磁盤,Client通過這些元數據信息可以找到相應的文件。此外,NameNode還負責監控DataNode的健康情況,一旦發現DataNode異常,就將其踢出,并拷貝其上數據至其它DataNode。

3、Secondary NameNode

Secondary NameNode負責定期合并NameNode的fsimage和editlog。這里特別注意,它不是NameNode的熱備,所以NameNode依然是Single Point of Failure。它存在的主要目的是為了分擔一部分NameNode的工作(特別是消耗內存的工作,因為內存資源對NameNode來說非常珍貴)。

4、DataNode

DataNode負責數據的實際存儲。當一個文件上傳至HDFS集群時,它以Block為基本單位分布在各個DataNode中,同時,為了保證數據的可靠性,每個Block會同時寫入多個DataNode中(默認為3)

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!