HDFS檔案系統總結

2021-08-14 18:55:09 字數 2284 閱讀 6760

hdfs預設快大小128m

hdfs小於乙個塊大小的檔案不會佔據整個塊空間

對檔案系統塊檢查:hdfs fsck  / -files -blocks

namenode管理檔案系統的命名空間,維護者檔案系統及整顆樹內所有檔案和目錄,這些資訊以兩個檔案形式永久儲存在本地磁碟上:命名空間映象檔案和編輯日誌檔案,也記錄著每個檔案各個塊所在的資料節點資訊

namenode容錯提供兩種機制:

1.備份那些組成該檔案系統元資料持久狀態的檔案

hadoop可通過配置使namenode在多個檔案系統上儲存元資料的持久裝填,實時同步,原子性

2.執行乙個輔助namenode

定期合併編輯與命名空間映象,通常部署到另一台單獨物理機,記憶體需要與namenode一致

datanode 檔案系統的工作節點,儲存並檢索資料塊(受namenode排程),定期向namenode傳送他們所儲存的塊列表

塊快取通常datanode從磁碟中讀取塊,對於頻繁訪問的檔案,其對應的塊可能被現實的快取在datanode的記憶體中,以堆外快快取的形式存在

使用者可通過快取吃(cache pool)中增加乙個 cache directive 告訴 namenode需要快取哪些檔案及快取多久

聯邦hdfs

對於超大集群來首,記憶體將成為限制系統荷香擴充套件的瓶頸,從2.x版本開始,引入聯邦hdfs,允許系統通過增加namenode實現擴充套件,其中每個namenode管理檔案系統命名空間的一部分,如/usr目錄下所有檔案

hdfs高可用

在hadoop2.x版本以後,當活動namenode失效,備用namenode就會接管它,實現這一目標需要架構上做如下修改:

1.namenode之間需要通過高可用共享儲存實現編輯日誌的共享

2.datanode需要同時向兩個namenode傳送資料塊處理報告,因為資料塊的對映資訊儲存在namenode記憶體中,而非磁碟

3.客戶端需要使用特定的機制來處理namenode失效問題

4.輔助namenode的角色被備用namenode所包含,設定週期性檢查點

兩種高可用性共享儲存做出選擇:

nfs過濾器或群體日誌管理器

資料流讀取檔案:

1.filestyle open() 開啟希望讀取的檔案,物件是distributedfilesystem

2.distributedfilesystem 通過遠端rpc呼叫namenode,獲取檔案起始位置,對於每乙個塊,反回datanode位址

3.distributedfilesystem 返回乙個fsdatainputstream物件給客戶端以便讀取資料,fsdatainputstream轉而封裝dsfinputstream物件,該物件管理著datanode和namenode的 i/o

4.客戶端對這個輸入流呼叫read()方法,連線最近的檔案第乙個塊所在的datanode,通過反覆呼叫read方法,將資料傳輸到客戶端

5.達到末端時,關閉datanode連線

寫入檔案:

1.客戶端對distributedfilesystem 物件呼叫create()來新建檔案

2.distributedfilesystem 對namenode建立乙個rpc呼叫,在檔案系統的命名空間中新建乙個檔案,此時該檔案中還沒有相應的資料塊

3.在客戶端寫入資料時,dfdataoutputstream 將他分成乙個個的資料報,並寫入內部佇列,稱為「資料佇列」

4.datastreamer處理資料佇列,他的責任是挑選出適合儲存資料副本的一組datanode

5.dfsoutputstream也維護著乙個內部資料報佇列來等待datanode的收到確認回執,稱為「確認佇列」

一致模型

描述了檔案讀寫的資料可見性

fs.create(path(p))新建乙個檔案後,它能在檔案系統的命名空間中立即可見:

fs.exists(p) = true

但是寫入檔案的內容並不能保證立即可見,即使資料流已經重新整理並儲存,但是檔案長度顯示為0,當寫入資料超過乙個塊後,第乙個資料塊對新的reader就是可見的

fsdataoutputstream 呼叫hflush()方法,重新整理目前為止寫入的資料均達到所有datanode的寫入管道,並且對所有新reader均可見

hflush()不保證datanode已將資料寫到磁碟上,僅確保資料在datanode的記憶體中(如果斷電,資料會丟失)

為確保資料寫入磁碟上可呼叫hsync()代替

通過distcp並行複製

hadoop distcp file1 file2

hadoop distcp dir1 dir2

distcp 是作為乙個mapreduce作業來實現的

HDFS檔案系統

hdfs 是 hadoop distribute file system 的簡稱,意為 hadoop 分布式檔案系統。是hadoop 核心元件之一,作為最底層分布式儲存服務而存在。分布式檔案系統解決的問題就是大資料儲存。它們是橫跨在多台計算機上的儲存系統。分布式檔案系統在大資料時代有著廣泛的應用前景...

Hadoop 檔案系統(HDFS)

磁碟傳輸速率100m s,定址時間10ms,讓定址時間是傳輸時間的1 所以塊的大小為 100 0.01s 100m s 100m 128m 在 hdfs default.xml 中搜尋dfs.blocksize,可以修改大小 檔案上傳 檢查檔案block的狀態 由上可見,狀態是健康的 啟動所有資料節...

hdfs檔案系統掛載

使用fuse將hdfs檔案系統掛載遠端伺服器上,像使用nfs和glusterfs那樣可以掛載共享儲存 fuse可以編譯安裝或者通過cdh或ambari源yum安裝 此處使用ambari 配置ambari官方源,然後就可以yum安裝了sudo 注意 安裝fuse只需要在客戶端 即需要掛載hdfs的伺服...