hadoop學習筆記之--- HDFS原理學習

HDFS

HDFS設計基礎與目標:

  1. 冗餘:硬件錯誤是常態

  2. 流式數據訪問。即數據比量讀取而非隨機讀寫,Hadoop擅長做的是數據分析而不是事務處理。

  3. 大規模數據集

  4. 簡單一致性模型。爲了降低系統複雜程度,對文件採用一次性寫多多次讀的邏輯設置,即是文件一經寫入,關閉,再也不能修改。

  5. 程序採用“數據京近”原則分配節點執行。

 

OLTP:偶爾隨機性德讀寫

 

HDFS體系架構:

 

NameNode:

管理文件系統的命名空間;

記錄每個文件數據塊在各個Datanode上的位置和副本信息;

協調客戶端對文件的訪問;

記錄命名空間內的改動或空間本身屬性的改動;

Namenode使用事務日誌記錄HDFS元數據的變化;

使用映像文件存儲文件系統的命令空間,包括文件映射,文件屬性等;

 

DateNode

 

負責所在物理節點的存儲管理;

一次寫入,多次讀取(不能修改,不用考慮數據讀取一致性);

文件由數據塊組成,典型塊大小64MB

數據塊儘量散佈到各個節點;

 

HDFS讀取數據流程

 

客戶端要訪問HDFS中一個文件;

首先從namenode獲得組成這個文件的數據塊位置列表;

根據列表知道存儲數據塊的datanode;

訪問datanode獲取數據;

Namenode並不參與數據實際傳輸;

 

 

HDFS的可靠性

 

  1. 冗餘副本策略

hdfs-site.xml設置replication設置複製因子,指定副本數量;

複製因子:如果是1 沒有副本。副本數太多,空間利用,複製副本影響性能

 

Datanode啓動時,遍歷本地文件系統,產生一份hdfs數據塊和本地文件的對應關係列表(塊報告blockreport)彙報給namenode

 

  1. 機架策略

集羣一般放在不同機架上,機架間帶寬要比機架內帶寬要小;

 

HDFS的“機架感知”

一般在本機架存放一個副本,在其它機架再放別的副本,這樣可以防止機架失效時丟失數據,提高帶寬利用率;

 

  1. 心跳機制

Oracle:  rack

 

Namenode週期性從datanode接收心跳信號和塊報告;

Namenode根據塊報告驗證元數據;

沒有按時發送心跳的datanode會被標記爲宕機,不會再給它任何I/O請求;

如果datanode失效造成副本數量下降,並且低於預先設置的閾值,namenode會檢測出這些數據塊,並在合適的時機進行重複制;

引發重新複製的原因還包括數據副本本身損壞、磁盤錯誤,複製因子被增大等;

 

 

  1. 安全模式

 

Namenode啓動時會先經過一個安全模式階段;

安全模式階段不會產生數據寫;

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

在一定比例(可設置)的數據塊被確定安全後,再過若干時間,安全模式結束;

當檢測到副本數不足的數據塊時,該塊會被複制直達到最小副本數;

 

  1. 校驗和:驗證數據是否是完整

 

在文件創立時,每個數據塊都會產生校驗和;

校驗和會作爲單獨一個隱藏文件保存在命名空間下;

客戶端獲取數據時可以檢查校驗和是否相同,從而發現數據塊是否損壞;

如果正在讀取的數據塊損壞,則可以繼續讀取其它副本;

 

  1. 回收

 

刪除文件時,其實是放入回收站,同windows回收站;

回收站裏的文件可以快速恢復;

可以設置一個時間閾值,當回收站裏文件的存放時間超過這個閾值時,就被徹底刪除,並且釋放佔用的數據塊;

core_site.xml文件中開啓功能:fs.trash.interval

說明:hadoop垃圾回收機制,每隔多長時間清理一次垃圾

value1440

備註:默認值是0,不打開垃圾收回機制。刪除掉的文件將直接清除,不保存。如果設置了,則將保存到本地的.crash文件夾下

 

 

如果開啓回收站功能:

 

  1. 元數據保護

 

元數據包括映像文件和事務日誌;

namenode的核心數據,可配置爲擁有多個副本;

 

  1. 快照

 

支持存儲某個時間點的映像,需要時可以使數據重返這個時間的狀態;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章