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