名稱 | 描述 |
NameNode | 用於管理檔案系統的命名空間、維護檔案系統的目錄結構樹以及中繼資料資訊,記錄寫入的每個資料區塊(Block)與其歸屬檔案的對應關係。 此資訊以命名空間鏡像(FSImage)和編輯日誌(EditsLog)兩種形式持久化在本地磁碟中。 |
DataNode | DataNode是檔案的實際存放位置。 DataNode會根據NameNode或Client的指令來儲存或者提供資料區塊,並且定期地向NameNode彙報該DataNode儲存的資料區塊資訊。 |
Client | 通過Client來訪問檔案系統,然後由Client與NameNode和DataNode進行通訊。Client對外作為檔案系統的介面,類似於POSIX。 |
Blocks | HDFS將檔案拆分成128 MB大小的資料區塊進行儲存,這些Block可能儲存在不同的節點上。HDFS可以儲存更大的單個檔案,甚至超過任何一個磁碟所能容納的大小。一個Block預設儲存3個副本(EMR Core節點如果使用雲端硬碟,則為2副本),以Block為粒度將副本儲存在多個節點上。此方式不僅提高了資料的安全性,而且對於分布式作業可以更好地利用本地的資料進行計算,減少網路傳輸。 |
Secondary NameNode | 對於非高可用叢集,預設會啟動一個Secondary NameNode進程。Secondary NameNode的作用是消費EditsLog,週期性合并FsImage和EditsLog,產生新的FsImage檔案,降低了NameNode的壓力。 |
高可用 | 對於高可用叢集,預設會啟動兩個NameNode,一個是Active NameNode,另一個是Standby NameNode,兩個NameNode承擔不同角色。 Active NameNode負責處理DataNode和Client的請求,Standby NameNode跟Active NameNode一樣擁有最新的中繼資料資訊,隨時準備在Active NameNode出現異常時接管其服務。如果Active NameNode異常,Standby NameNode會感知到並切換成Active NameNode的角色處理DataNode和Client請求。 |