Hadoop學習筆記(九)HDFS架構分析

2022-09-13 11:30:14 字數 2753 閱讀 3300

巨大的分布式檔案系統:10pb以上,萬個以上節點

執行於普通硬體:檔案多重備份,探測失敗和錯誤恢復

優化批處理:資料暴漏位置,以便計算能夠挪到資料附近;提供高舉和的頻寬

使用者控制項可以位於異構的作業系統中

在整個集群中使用單一的命名空間

資料一致性:寫入一次讀取多次的訪問模型;客戶端只能追加已有的檔案

檔案被分割:預設一塊64m;每一塊複製到不同datanode

智慧型客戶端:客戶端能找到檔案塊位置;客戶端能直接訪問datanode中檔案位置

程式採用「資料就近」原則分配節點執行

客戶端對檔案沒有快取機制

低延遲資料訪問:毫秒級,高吞吐率

小檔案訪問:占用namenode大量記憶體;namenode尋道時間過長

併發寫入、檔案隨機修改

來自hadoop.apache.org

hdfs主/從體系結構。乙個hdfs集群由乙個單一的namenode管理檔案系統命名空間並控制客戶端對檔案的訪問。此外,有許多的datanode對應乙個集群中的每個節點,節點用於檔案管理和儲存。

hdfs公開檔案系統命名空間並允許將使用者資料儲存在檔案中。在內部,乙個檔案被分成乙個或多個塊,這些塊儲存在一組datanode。

namenode執行檔案系統命名空間操作,如開啟,關閉,重新命名檔案和目錄。它還決定了對映datanode的塊。

datanode負責從檔案系統的讀寫請求服務客戶。

namenode發出建立、刪除和複製指令,由datanode在對映塊上執行。

datanode blockreport預設一小時一次,heartbeat預設三秒一次。heartbeat帶有,namenode命令的返回結果,超過十分鐘未接受心跳,則改節點不可用。

datanode支援熱啟動和關閉。

兩個重要檔案

- fsimage:元資料映象檔案(儲存檔案系統目錄樹)

- fsedits:元資料操作日誌

元資料映象=fsimage+fsedits

元資料映象正常情況下儲存在namenode中。

secondarynamenode負責namenode冷備份,定期合併fsimage和fsedits。fsedits檔案會不斷增大,導致namenode速度慢。

hdfs的許可權管理和linux型別,web端可以看到。

hdfs並沒有實現嚴格的許可權管理,檔案僅僅通過使用者名稱驗證。

hdfs許可權目的:阻止好人做錯事,而不阻止壞人做壞事。

層次性檔案結構,類似linux、win,不支援軟硬連線

可以建立、移動、複製、刪除、重新命名、追加檔案

不可以修改檔案

根據分析我們不難得出,hdfs的檔案系統實際是通過namenode控制的。

但hdfs資料流不通過namenode,避免namenode成為系統瓶頸。

hdfs為了容錯,會對資料備份。乙個檔案的副本的數目稱為該檔案的複製因子。

hdfs用於解決大檔案,因此會將大檔案分割成小塊,檔案儲存在namenode上為塊的序列,實際資料分散到各個datanode上

塊大小和複製因子可以設定,複製因子在資料儲存之後可以更改。

常見三種錯誤情況:

資料複製之前,namenode會週期性接收心跳訊號(heartbeat)和塊報告(blockreport)。心跳訊號表示datandoe正在執行,塊報告包含datanode節點塊列表。

來自 hadoop.apache.org

對於常見的情況下,複製因子為三個,hdfs的放置策略是把第乙個副本放在本地機架的乙個節點,第二個副本放置在本地機架上的另外乙個節點,第三個副本放置在另外乙個機架的節點上​​。這種策略削減了機架間的寫操作從而提高寫入效能。機架故障機率比節點故障低的多; 這種策略不會影響資料的可靠性和可用性。

然而,它確實減少讀取資料時的頻寬,塊資料只來自於兩個機架而不不是三個機架。根據此策略,檔案副本不必均勻地分布在乙個機架。副本塊的三分之一在當前節點上,副本塊的三分之一在同一機架上,另外三分之一是均勻分布在其餘的機架。這一政策提高寫入效能並且不會影響資料可靠性和讀取效能。

這裡注意hadoop的副本實際上儲存的是塊的序列,並且序列上的塊會有多個副本。

hadoop副本在讀取時會選取最優策略,就近選擇節點和機架。

datanode讀取時,計算checksum。若checksum與namenode不一致,則損壞。讀取其他備份。並且對正確的備份再備份數量達到複製因子。

datanode在其檔案建立後三周校驗checksum。

hadoop學習筆記(HDFS)

hdfs的設計基礎與目標 1 硬體錯誤是常態,因此需要冗餘。2 為大資料而生,流式讀寫,批量讀取而非隨機讀寫。擅長資料分析而不是事務處理。3 大規模資料集。4 一次寫多次讀邏輯設計,即一旦寫入,只能讀,不能修改。5 程式才用 資料就近 原則分配節點執行。hdfs的可靠性 冗餘副本策略 機架策略 心跳...

hadoop學習筆記(二) HDFS

定義 hdfs hadoop distributed file system 它是乙個檔案系統,用於儲存檔案,通過目錄樹來定位檔案,它是分布式的,由很多伺服器聯合起來實現其功能。場景 適合一次寫入,多次讀出的場景,且不支援檔案的修改,適合用來做資料分析,不適合做網盤應用。優點 1.高容錯性 資料儲存...

HADOOP學習筆記(一) HDFS

hdfs,它是乙個檔案系統,用於儲存檔案,通過目錄樹來定位檔案 其次,它是分布式的,由很多伺服器聯合起來實現其功能,集群中的伺服器有各自的角色。hdfs的設計適合一次寫入,多次讀出的場景,且不支援檔案的修改。適合用來做資料分析,並不適合用來做網盤應用。namenode 它維護著整個檔案系統的檔案資料...