文章目錄
- @[toc]
- HDFS 1.0
- NameNode
- 維護文件系統命名空間
- 存儲元數據
- 解決NameNode單點問題
- SecondaryNameNode
- 機架感知
- 數據完整性校驗
- 校驗和
- 數據塊檢測程序DataBlockScanner
- HDFS寫流程
- HDFS讀流程
- HDFS與MapReduce本地模式
- Block大小
- HDFS 2.0
- NameNode HA
- NameNode Federation
- HDFS Snapshot
- 緩存
- ACL
- Block大小
文章目錄
- @[toc]
- HDFS 1.0
- NameNode
- 維護文件系統命名空間
- 存儲元數據
- 解決NameNode單點問題
- SecondaryNameNode
- 機架感知
- 數據完整性校驗
- 校驗和
- 數據塊檢測程序DataBlockScanner
- HDFS寫流程
- HDFS讀流程
- HDFS與MapReduce本地模式
- Block大小
- HDFS 2.0
- NameNode HA
- NameNode Federation
- HDFS Snapshot
- 緩存
- ACL
- Block大小
個人主頁:丷從心·
系列專欄:大數據
HDFS 1.0
NameNode
維護文件系統命名空間
存儲元數據
- 元數據存儲在內存中
- 維護文件名 → B l o c k \rightarrow Block →Block、 B l o c k → D a t a N o d e Block \rightarrow DataNode Block→DataNode的映射關系
- 持久化元數據的文件是 f s i m a g e fsimage fsimage
- 所有對元數據的操作都保存在內存中并被持久化到文件 e d i t l o g s edit \ logs edit?logs中
- e d i t l o g s edit \ logs edit?logs文件和 f s i m a g e fsimage fsimage文件會被 S e c o n d a r y N a m e N o d e SecondaryNameNode SecondaryNameNode周期性地合并
解決NameNode單點問題
- 將 H a d o o p Hadoop Hadoop元數據寫入到本地文件系統的同時再實時同步到一個遠程掛載的網絡文件系統( N F S NFS NFS)中
- 當 N a m e N o d e NameNode NameNode發生故障時 S e c o n d a r y N a m e N o d e SecondaryNameNode SecondaryNameNode會通過自己合并的命名空間鏡像 f s i m a g e fsimage fsimage副本來恢復 N a m e N o d e NameNode NameNode,但是 S e c o n d a r y N a m e N o d e SecondaryNameNode SecondaryNameNode保存的狀態總是滯后于 N a m e N o d e NameNode NameNode,難免會丟失部分數據
SecondaryNameNode
- N a m e N o d e NameNode NameNode在下次重啟時會使用新的 f s i m a g e fsimage fsimage文件,從而減少重啟時間
機架感知
- 機架感知是 B l o c k Block Block副本放置策略
- 第一個副本放在客戶端節點,如果客戶端是集群外的一臺機器,就隨機選擇節點,但是會避免挑選太滿或者太忙的節點
- 第二個副本放在不同機架的節點
- 第三個副本放在與第二個副本同機架但是不同節點上
數據完整性校驗
校驗和
- 在第一次進入系統時計算數據的校驗和,在通道傳輸后,如果新生成的校驗和不完全匹配原始的校驗和,那么數據就會被認為是損壞的
數據塊檢測程序DataBlockScanner
- 在 D a t a N o d e DataNode DataNode節點上開啟一個后臺線程,來定期驗證存儲在它上的所有塊,防止物理介質出現損減而造成的數據損壞
- 一旦發現數據塊損壞, D a t a N o d e DataNode DataNode會接收到 N a m e N o d e NameNode NameNode發送的 B l o c k Block Block修復指令
HDFS寫流程
- F S D a t a O u t p u t S t r e a m FSData \ OutputStream FSData?OutputStream將原始數據切分成數據塊并寫入一個隊列
- 數據弱一致性:第一個副本寫入后就立刻返回 A C K ACK ACK
HDFS讀流程
HDFS與MapReduce本地模式
- 數據不移動,代碼邏輯移動
Block大小
- H D F S 1.0 HDFS \ 1.0 HDFS?1.0默認 B l o c k Block Block大小為 64 M B 64 MB 64MB
HDFS 2.0
NameNode HA
- 運行 A c t i v e N a m e N o d e Active \ NameNode Active?NameNode與 S t a n d b y N a m e N o d e Standby \ NameNode Standby?NameNode的機器需要相同的硬件配置
- J o u r n a l N o d e JournalNode JournalNode本質是共享的網絡文件系統,由奇數個節點組成,用于存儲 e d i t l o g s edit \ logs edit?logs
- F a i l o v e r C o n t r o l l e r FailoverController FailoverController本質是 Z o o K e e p e r ZooKeeper ZooKeeper的客戶端,監控 N a m e N o d e NameNode NameNode狀態信息,實現故障轉移
NameNode Federation
- N a m e N o d e F e d e r a t i o n NameNode \ Federation NameNode?Federation本質是命名空間的分離,解決了 N a m e N o d e NameNode NameNode內存資源不足的問題
- 一個 N a m e s p a c e Namespace Namespace對應一個 B l o c k P o o l Block \ Pool Block?Pool,即一個 N a m e s p a c e Namespace Namespace下的所有 B l o c k Block Block的集合
- 通過視圖文件系統 V i e w F S ViewFS ViewFS管理全局 N a m e s p a c e Namespace Namespace
HDFS Snapshot
- S n a p s h o t Snapshot Snapshot常用來作為數據備份
- S n a p s h o t Snapshot Snapshot只記錄了文件系統元數據信息,并沒有進行數據的拷貝
緩存
- H D F S 2.0 HDFS \ 2.0 HDFS?2.0支持集中式緩存,可以明確指定要緩存數據
- 支持對非遞歸目錄和文件的緩存
ACL
- H D F S 2.0 HDFS \ 2.0 HDFS?2.0支持 A C L ACL ACL管理
Block大小
- H D F S 2.0 HDFS \ 2.0 HDFS?2.0默認 B l o c k Block Block大小為 128 M B 128 MB 128MB