HDFS,其實是Hadoop Distributed File System的簡稱即分布式文件系統(tǒng),基于Hadoop分布式集群來實現(xiàn)大規(guī)模數(shù)據(jù)存儲。HDFS對需要存儲的數(shù)據(jù),進(jìn)行寫入和讀出,通過“目錄樹”來定位文件。當(dāng)收到數(shù)據(jù)存儲請求時,HDFS將文件進(jìn)行分塊(Block),一批數(shù)據(jù)會被分成若干個Block,然后分配到集群當(dāng)中的計算機(jī)進(jìn)行存儲;當(dāng)需要提取這些數(shù)據(jù)時,再通過定位文件所在位置,找到需要的數(shù)據(jù)。
基于這樣劃分?jǐn)?shù)據(jù)塊的做法,一個文件的大小可以大于網(wǎng)絡(luò)中任意一個磁盤的容量。文件的所有塊不需要存儲在同一個磁盤上,因此它們可以利用集群上的任意一個磁盤進(jìn)行存儲。
簡化了存儲子系統(tǒng)的設(shè)計,將存儲子系統(tǒng)控制單元設(shè)置為塊,可簡化存儲管理,同時元數(shù)據(jù)就不需要和塊一同存儲,用一個單獨的系統(tǒng)就可以管理這些塊的元數(shù)據(jù)。并且,數(shù)據(jù)塊適合用于數(shù)據(jù)備份進(jìn)而提供數(shù)據(jù)容錯能力和提高可用性。
HDFS進(jìn)行數(shù)據(jù)存儲時,涉及到三個節(jié)點,Namenode,Datanode以及Secondary Namenode。
Namenode:HDFS的守護(hù)進(jìn)程,用來管理文件系統(tǒng)的命名空間,負(fù)責(zé)記錄文件是如何分割成數(shù)據(jù)塊,以及這些數(shù)據(jù)塊分別被存儲到那些數(shù)據(jù)節(jié)點上,它的主要功能是對內(nèi)存及IO進(jìn)行集中管理。
Datanode:文件系統(tǒng)的工作節(jié)點,根據(jù)需要存儲和檢索數(shù)據(jù)塊,并且定期向namenode發(fā)送他們所存儲的塊的列表。
Secondary Namenode:輔助后臺程序,與NameNode進(jìn)行通信,以便定期保存HDFS元數(shù)據(jù)的快照。