是什麼?node
HDFS 是基於 Java 的分佈式文件系統,容許您在 Hadoop 集羣中的多個節點上存儲大量數據。編程
起源:網絡
單機容量每每沒法存儲大量數據,須要跨機器存儲。統一管理分佈在集羣上的文件系統稱爲分佈式文件系統。而一旦在系統中,引入網絡,就不可避免地引入了全部網絡編程的複雜性,例如挑戰之一是若是保證在節點不可用的時候——數據不丟失。分佈式
核心概念:oop
Block:spa
HDFS中的存儲單元是每一個數據塊block,HDFS默認的最基本的存儲單位是64M的數據塊。和普通的文件系統相同的是,HDFS中的文件也是被分紅64M一塊的數據塊存儲的。不一樣的是,在HDFS中,若是一個文件大小 < 一個數據塊的大小,它是不須要佔用整個數據塊的存儲空間的。日誌
NameNode:網絡編程
a. 元數據節點。該節點用來管理文件系統中的命名空間,是 master。其將全部的文件和文件夾的元數據保存在一個文件系統樹中,it
b. 這些信息在硬盤上保存爲了:命名空間鏡像(namespace image)以及修改日誌(edit log)。ast
c. 此外,NameNode還保存了一個文件包括哪些數據塊,分佈在哪些數據節點上。然而,這些信息不存放在硬盤上,而是在系統啓動的時候從數據節點(datanode)收集而成的。
DataNode:數據節點。是HDFS真正存儲數據的地方。客戶端(client)和元數據節點(NameNode)能夠向數據節點請求寫入或者讀出數據塊。此外,DataNode須要週期性的向元數據節點彙報其存儲的數據塊信息。
Secondary NameNode:
從元數據節點並非 NameNode 出現問題時候的備用節點,
a. 它的主要功能是週期性的將 NameNode 中的 namespace image 和 edit log 合併,以防 log 文件過大。
b. 此外,合併事後的 namespace image 文件也會在 Secondary NameNode 上保存一份,以防 NameNode 失敗的時候,能夠恢復。