HDFS架構與可靠性

2021-10-24 10:59:39 字數 2229 閱讀 1285

hdfs是乙個分布式檔案系統,基於流資料模式訪問和處理超大檔案的需求而開發的,可以運用在海量物理機集群上,具備的,高容錯、高可靠性、高可擴充套件性、高獲得性、高吞吐率等特徵,適用於海量資料儲存的場景。hdfs架構由hdfsclient、namenode、secondarynamenode、datanode組成

基本儲存單位,一般為128m(hadoop1.x預設64m,hadoop2.x預設128m)

基本的讀寫單位,類似於磁碟的頁,每次讀寫一塊

每個塊預設複製三分儲存到多台機器

儲存檔案的metadata,執行時所有metadata資料都儲存到記憶體,因此整個hdfs可儲存的檔案數受限於namenode的記憶體大小

乙個block在namenode中對應一條記錄(一般乙個block占用150位元組),如果是大量的小檔案,會消耗大量記憶體。同時map task的數量是由splits來決定的,所以用mapreduce處理大量的小檔案時,就會產生過多的map task,執行緒管理開銷將會增加作業時間。處理大量小檔案的速度遠遠小於處理同等大小的大檔案的速度。因此hadoop建議儲存大檔案,對於大量小檔案,可以採用壓縮、合併小檔案的優化策略,例如設定檔案的輸入型別為combinefileinputformate格式

資料會定時儲存到本地磁碟,但不儲存block的位置資訊,而是由datanode註冊時上報和執行時維護(namenode中與datanode相關的資訊並不儲存到namenode的檔案系統中,而是namenode每次重啟後,動態重建)

namenode失效則整個hdfs都失效了,所以要保證namenode的可用性

定時與namenode進行同步(定期合併檔案系統映象和編輯日誌,然後把合併後的傳給namenode,替換其映象,並清空編輯日誌,類似於checkpoint機制),但namenode失效後仍需要手工將其設定成主機

1.冗餘副本策略

可以在 hdfs-site.xml 中設定複製因子指定副本數量

所有資料塊都可副本

datanode 啟動時,遍歷本地檔案系統,產生乙份 hdfs 資料塊和本地檔案的對應關係列表 (blockreport) 匯報給 namenode

2.機架策略

hdfs 的"機架感知",通過節點之間傳送乙個資料報,來感應它們是否在同乙個機架

一般在本機架放乙個副本,在其他機架再存放乙個副本,這樣可以防止機架失效時丟失資料,也可以提高頻寬利用率

3.心跳機制

namenode 週期性從 datanode 接受心跳資訊和塊報告

namenode 根據塊報告驗證元資料

沒有按時傳送心跳的 datanode 會被標記為宕機,不會再給他任何 i/o 請求

如果 datanode 失效造成副本數量下降,並且低於預先設定的值,namenode 會檢測出這些資料庫,並在合適的時機從新複製

引發重新複製的原因還包括資料副本本身損壞,磁碟錯誤,複製因子被增大等

4.安全模式

namenode 啟動時會先經過乙個 "安全模式" 階段

安全模式階段不會產生資料寫

在此階段 namenode 收集各個 datanode 的報告, 當資料塊達到最小副本數以上時,會被認為是"安全"的

在一定比例(可設定) 的資料塊被確定為"安全" 後 ,在過若干時間,安全模式結束

當檢測到副本數不足的資料塊是,該塊會被複製,直到達到最小副本數

5.效驗和

在檔案創立時,每個資料塊都產生效驗和

效驗和會作為單獨乙個隱藏檔案儲存在命名空間下

客戶端獲取資料時可以檢查效驗和是否相同,從而發現資料塊是否損壞

如果正在讀取的資料塊損壞,則可以繼續讀取其他副本

6.**站

刪除檔案時,其實是放入**站 /trash

**站裡的檔案是可以快速恢復的

可以設定乙個時間值,當**站裡檔案的存放時間超過了這個值,就被徹底刪除,並且釋放占用的資料塊

7.元資料保護

映像檔案和事物日誌是 namenode 的核心資料.可以配置為擁有多個副本

副本會降低 namenode 的處理速度,但增加安全性

namenode 依然是單點,如果發生故障要手工切換

8、快照機制

快照支援在乙個特定時間儲存乙個資料拷貝,快照可以將失效的集群回滾到之前乙個正常的時間點上。hdfs已經支援元資料快照。

可靠性測試學習 可靠性測試理解

最近測試可靠性,參考了業界的一些思維,有些想法和建議 先說說軟體可靠性的定義,根據我測試的體會和思考,我覺得軟體的可靠性就是軟體系統發生故障後自動恢復或者人工干預使其能恢復到正常狀態的能力 業界的測試有些把容錯測試和可靠性測試搞混淆,其實兩者不一樣,容錯測試是通過模擬一些可能發生的已知的異常操作而檢...

產品可靠性

產品可靠性 影響產品可靠性的三個方面 1.電應力 2.機械應力 3.環境應力。下面從上述三個方面展開講述。應力 專案 內容 備註電應力 物料 1.pcb 商 2.pcb抽檢 3.元器件選型 元器件選型指導書 4.採購渠道 商資質a b c類 5.儲存 msl 6.領料 原理設計 1.電路方案 2.電...

軟體可靠性

1983年美國ieee計算機學會對 軟體可靠性 作出了明確定義,此後該定義被美國標準化研究所接受為國家標準,1989年我國也接受該定義為國家標準。該定義包括兩方面的含義 1 在規定的條件下,在規定的時間內,軟體不引起系統失效的概率 2 在規定的時間週期內,在所述條件下程式執行所要求的功能的能力 其中...