日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Hadoop分布式文件系统--HDFS结构分析

發布時間:2025/3/8 windows 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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结构分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。