Hadoop分布式文件系统--HDFS结构分析
生活随笔
收集整理的這篇文章主要介紹了
Hadoop分布式文件系统--HDFS结构分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
在Hadoop內部,詳細實現了很多類的文件系統,當然最最被我們用到的就是他的分布式文件系統HDFS了。
可是本篇文章不會講HDFS的主從架構等東西,由于這些東西網上和資料書中都講得非常多了。
所以,我決定以我個人的學習所得。來講講HDFS內部的一些有意思的東西,也作為一個起始點。為興許繼續深入當中模塊的學習做基礎。
HDFS兩大主流關系模塊
與NameNode相關,文件系統元數據操作相關。包含文件文件夾樹,每一個文件對于數據塊列表,fsImgae鏡像文件和editlog編輯日志在維護整個集群元數據的時候的各種操作。
與DataNode相關。指的就是數據塊與數據節點的相應關系,通俗的理解就是某個數據塊保存在哪些數據節點上。里面事實上會涉及到非常多操作,包含block副本復制,損壞塊刪除。租約機制等等。
第一關系模塊(NameNode相關)
涉及的類
INode
Hadoop也相同用了相似linux文件系統中的i-node的概念,即索引節點。
INode是一個抽象類。后面的INodeDirectory以及INodeFile都是他的子類。這樣就能夠做到保持一些共同擁有的屬性。
INodeDirectory,INodeFile
- 經常用法:
- INodeDirectory.removeChild()
FSImage
- 命名空間鏡像類,以下是經常使用的方法
- FSImage.saveFSImage()–講當前時刻的命名空間鏡像,保存文件里
- FSImage.loadFSImage()–讀取鏡像文件里的數據。恢復元數據
FSEditLog
- 編輯日志類。以下是經常用法
- FSEditLog.logEdit()–寫入日志記錄操作。
- FSEditLog.logSync()–同步日志記錄操作。
- FSEditLog.rollEditLog()–用于第二名字節點上載新命名空間鏡像。
FSDirectory
- HDFS引入FSDirectory作為門面,處理各種操作,然后分派到子系統中的各個對象中。經常用法
- getFileInfo()–獲取文件狀態信息
- setOwner()–改動文件主標識符和用戶組標識符
第二關系模塊(DataNode相關)
Block數據塊相關類
- BlocksMap–數據塊映射,名字節點上數據塊的元數據
- DatanodeDescriptor–數據節點描寫敘述符,名字節點對數據節點的抽象
- BlockInfo-BlocksMap,保存數據節點的信息
數據節點管理
- refreshNodes()–會讀取dfs.hosts.exclude,include配置的信息。
- registerDatanode–數據節點注冊
- DataNode.offerService()–數據節點利用循環向名字節點發送信息。
網絡結構
相關類NetworkTopology,經常用法:
- getDistance()–計算網絡距離
- isOnSameRack()–推斷節點是否屬于同一機架上
DNSToSwitchMapping–此接口用于主機到網絡位置的轉換
數據塊管理
- 相關類主要為FSNameSystem,經常用法:
- FSNameSystem.addStoreBlock()–加入數據塊副本
- blockReceived()–數據塊提交方法,數據節點成功接收到一個數據塊后,必須使用此方法向名字節點提交數據塊信息。
讀取數據方法
- getBlockLocations()–讀取數據前須要定位數據的位置,返回LocatedBlock對象實例
- reportBadBlocks()
租約
- 簡單的說,租約是名字節點給予租約持有者在規定時間內對文件的使用權限。
- LeaseManager.Lease 租約持有者的信息,就是client。
- LeaseManager.add()–在租約管理器中加入打開文件的信息。
- FSNamesystem.checkLease()–租約檢查操作。為追加數據打開文件。加入。放棄數據塊或關閉文件的時候,都須要對被操作的文件進行租約檢查。
- LeaseManager.renewLease()–通過更新Lease.lastUpdate的值來維護租約。
- LeaseManager.Monitor–這是一個內部類。Monitor類實現了runnable接口,定期進行租約檢查。
安全模式
- SafeMode安全模式是HDFS的一個僅僅讀的視圖模式,全部的更新操作都會檢驗一次是否處于安全模式,相關類以及方法
- SafeModeMonitor–安全模式的檢查線程實現類。
- canLeave()–推斷內部的reached變量的值
- setSafeMode()
參考文獻
《Hadoop技術內部–HDFS結構設計與實現原理》.蔡斌等
總結
以上是生活随笔為你收集整理的Hadoop分布式文件系统--HDFS结构分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Security 入门(3
- 下一篇: 捕获分组和非捕获分组以及命名分组