Hadoop的核心三大元件之一,HDFS主要負責分散式檔案儲存,將大規模的資料儲存任務拆分成小塊,分佈到不同的機器上,從而以低成本的方式解決大資料儲存問題。今天的大資料入門分享,我們就主要來講講伴隨著Hadoop的迭代更新,HDFS架構是如何演進的。
眾所周知,Hadoop的誕生源於Google三篇論文,也就是我們經常說的“三輛馬車”,2006年Hadoop出了第一個發行版本,Hadoop到目前為止發展已經有10餘年,版本經過了無數次的更新迭代,業內把Hadoop大的版本分為Hadoop1,hadoop2,Hadoop3三個版本。而HDFS,也隨著Hadoop的更新迭代,在不斷完善和最佳化。HDFS架構演進(1)HDFS 1.0架構一般來說,架構我們分兩種,一種就是主從架構,另一種是對等架構。在大資料生態中,常用的對等架構有Zookeeper、Kafka,而HDFS是主從式(master/slave)結構,由NameNode和DataNode以及SecondaryNamenode組成,如下圖所示:
Namenode:屬於叢集中的中心伺服器,管理節點,主要負責管理檔案系統的名稱空間(namespace)以及客戶端對檔案的訪問,比如開啟、關閉、重新命名檔案或目錄,同時管理叢集元資料的儲存,記錄檔案中資料塊(block)的對映關係。Datanode:主要負責儲存使用者資料,處理來自檔案系統客戶端的請求,保持與namenode的通訊,執行namenode的排程指令。SeconddaryNameNode:主要是合併NameNode的edit logs到fsimage檔案。HDFS 1.0當中,分散式檔案系統由一個Namenode和多個Datanode共同組成,這樣的組織架構,導致了HDFS 1.0在運行當中出現單點故障以及記憶體受限的問題。在實際運行當中,一旦NameNode出現了故障或者宕機,會導致資料丟失。因此在之後的HDFS 2.0架構當中,就對此作了改進。(2)HDFS 2.0架構HDFS 2.0採用HA(高可用)的方案,相對於HDFS 1.0來說,Namenode會區分兩種狀態,active和standby,正常工作的時候時候由active Namenode對外提供服務,standby Namenode則會從journalnode同步元資料,保證和active保持元資料一致。
當active Namenode出現故障或者宕機的時候,standby會自動切換為新的active Namenode對外提供服務,並且HA對外提供了統一的訪問名稱,對於使用者來說,不管訪問的Namenode是active狀態還是standby狀態都是無感知的。此外HDFS 2.0透過federation(聯邦)機制解決了記憶體受限的問題。HDFS 2.0採用了建倉庫的辦法,也就是federation機制,但是一般適用於1000+規模的叢集,小公司基本是用不上。(3)HDFS 3.0架構HDFS 3.0在架構上相對於HDFS 2.0沒什麼大的調整,HDFS 2.0只支援至多兩個Namenode,而HDFS 3.0在2.0的基礎上增加了多個Namenode的支援,提供叢集可用性。HDFS 3.0主要聚焦提升底層資料儲存最佳化,降低資料開銷的成本,採用糾錯碼技術提高叢集的容錯性。關於大資料入門,HDFS架構演進之路,以上就為大家做了簡單的介紹了。作為大資料主流基礎架構的Hadoop,在實際發展當中歷經多次更新和迭代,而其中的HDFS架構,也是在不斷完善和最佳化的。