Hadoop學習(一)——HDFS分散式檔案系統

Hiway發表於2019-02-19

其他更多java基礎文章:
java基礎學習(目錄)


學習資料
深入理解HDFS:Hadoop分散式檔案系統

HDFS概述

HDFS是Hadoop Distribute File System 的簡稱,也就是Hadoop的一個分散式檔案系統。
分散式檔案系統(DistributedFileSystem) 是指檔案系統管理的物理儲存資源不一定直接連線在本地節點上,而是通過計算機網路與節點相連。分散式檔案系統的設計基於客戶機/伺服器模式。一個典型的網路可能包括多個供多使用者訪問的伺服器。

HDFS重要概念

Hadoop學習(一)——HDFS分散式檔案系統

Block資料塊

在HDFS系統中,為了便於檔案的管理和備份,引入分塊概念(block)。這裡的塊是HDFS儲存系統當中的最小單位,HDFS預設定義一個塊的大小在Hadoop1.0中為64MB,Hadoop2.0中為128MB。當有檔案上傳到HDFS上時,若檔案大小大於設定的塊大小,則該檔案會被切分儲存為多個塊,多個塊可以存放在不同的DataNode上。但值得注意的是如果某檔案大小沒有到達64/128MB,該檔案並不會佔據整個塊空間 。(例如當一個1MB的檔案儲存在128MB的塊中,檔案只使用1MB的硬碟空間,而不是128MB)。預設副本數為3。

namenode

namenode是管理檔案系統的名稱空間。它維護者檔案系統樹及整顆樹內所有的檔案和目錄。這些資訊以兩個檔案形式永久儲存在本地磁碟上:fsimage名稱空間映象檔案和edits編輯日誌檔案。namenode也記錄著每個檔案中各個塊所在的資料節點資訊,但它並不永久儲存塊的位置資訊,因為這些資訊會在系統啟動時根據資料節點資訊重建。

datanode

datanode是檔案系統的工作節點。它們根據需要儲存並檢索資料塊,並定期向namenode傳送它們所儲存的塊的列表。

secondnamenode

secondnamenode又稱為輔助namenode。secondnamenode不能被用作namenode,它的重要作用是定期合併namenode編輯日誌與名稱空間映象,以防編輯日誌過大。但是,secondnamenode儲存的狀態總是滯後於主節點namenode。

Client

客戶端,系統使用者,呼叫HDFS API操作檔案;與NN互動獲取檔案後設資料;與DN互動進行資料讀寫。

hdfs細節

datatnode副本儲存邏輯

hadoop的預設佈局策略是在執行客戶端的節點上放第1個複本(如果客戶端執行在叢集之外,就隨機的選擇一個節點,但是系統會避免挑選那些儲存太滿或太忙的節點)。第2個複本放在與第1個不同且是隨機選擇的另外的機架中的節點上。第3個複本與第2個複本放在同一個機架上面,且是隨機選擇的一個節點,其他的複本放在叢集中隨機選擇的節點上面,但是系統會盡量避免在相同的機架上面放太多的複本。

Hadoop學習(一)——HDFS分散式檔案系統

secondnamenode合併namenode日誌過程

hadoop SecondNamenode詳解

  1. 初始化檢查點
  2. secondnamenode通知Namenode啟用新的edits檔案
  3. 從Namenode下載fsimage和edits檔案
  4. 呼叫loadFSImage裝載fsimage
  5. 呼叫loadFSEdits應用edits日誌
  6. 儲存合併後的目錄樹資訊到新的image檔案中
  7. 將新產生的image上傳到Namenode中,替換原來的image檔案
  8. 結束檢查點

Hadoop學習(一)——HDFS分散式檔案系統

hdfs寫入寫出過程

www.cnblogs.com/zhangyinhua…

在學習過程中,發現這篇文章寫得很全面,這個部分非常重要,希望大家好好閱讀這篇文章。

hdfs的容錯機制

www.cnblogs.com/zhangyinhua…

hadoop HA高可用

對於分散式檔案系統HDFS ,NN是系統的核心節點,儲存了各類後設資料資訊,並負責管理檔案系統的名稱空間和客戶端對檔案的訪問。但是,在HDFS1.0中,只存在一個NN,一旦發生“單點故障”,就會導致整個系統失效。

HDFS2.0採用了HA(High Availability)架構。在HA叢集中,一般設定兩個NN,其中一個處於“活躍(Active)”狀態,另一個處於“待命(Standby)”狀態。處於Active狀態的NN負責對外處理所有客戶端的請求,處於Standby狀態的NN作為熱備份節點,儲存了足夠多的後設資料,在Active節點發生故障時,立即切換到活躍狀態對外提供服務。

Hadoop學習(一)——HDFS分散式檔案系統

由於Standby NN是Active NN的“熱備份”,因此Active NN的狀態資訊必須實時同步到StandbyNN。針對狀態同步,可以藉助一個共享儲存系統來實現,如NFS(NetworkFile System)、QJM(Quorum Journal Manager)或者Zookeeper。Active NN將更新資料寫入到共享儲存系統,Standby NN會一直監聽該系統,一旦發現有新的寫入,就立即從公共儲存系統中讀取這些資料並載入到自己記憶體中,從而保證與Active NN狀態一致。

此外,NN儲存了資料塊到實際儲存位置的對映資訊,即每個資料塊是由哪個DN儲存的。當一個DN加入到叢集中時,它會把自己所包含的資料塊列表給NN,定期通過心跳方式,以確保NN中的塊對映是最新的。因此,為了實現故障時的快速切換,必須保證StandbyNN中也包含最新的塊對映資訊,為此需要給DN配置Active和Standby兩個NN的地址,把塊的位置和心跳資訊同時傳送到兩個NN上。為了防止出現“兩個管家”現象,還要保證在任何時刻都只有一個NN處於Active狀態,需要Zookeeper實現。

www.cnblogs.com/qcloud1001/…

hadoop Federation聯邦機制

雖然HDFS HA解決了“單點故障”問題,但是在系統擴充套件性、整體效能和隔離性方面仍然存在問題。

  1. 系統擴充套件性方面,後設資料儲存在NN記憶體中,受記憶體上限的制約。
  2. 整體效能方面,吞吐量受單個NN的影響。
  3. 隔離性方面,一個程式可能會影響其他執行的程式,如一個程式消耗過多資源導致其他程式無法順利執行。HDFS HA本質上還是單名稱節點。

HDFS聯邦可以解決以上三個方面問題。

blog.csdn.net/beidiqiuren…

相關文章