hdfs簡單介紹

2021-08-13 22:41:43 字數 3076 閱讀 7840

1. hdfs前言

設計思想

分而治之:將大檔案、大批量檔案,分布式存放在大量伺服器上,以便於採取分而治之的方式對海量資料進行運算分析;

在大資料系統中作用:

為各類分布式運算框架(如:mapreduce,spark,tez,……)提供資料儲存服務

重點概念:檔案切塊,副本存放,元資料

2. hdfs的概念和特性

首先,它是乙個檔案系統,用於儲存檔案,通過統一的命名空間——目錄樹來定位檔案

其次,它是分布式的,由很多伺服器聯合起來實現其功能,集群中的伺服器有各自的角色;

重要特性如下:

(1)hdfs中的檔案在物理上是分塊儲存(block),塊的大小可以通過配置引數( dfs.blocksize)來規定,預設大小在hadoop2.x版本中是128m,老版本中是64m

(2)hdfs檔案系統會給客戶端提供乙個統一的抽象目錄樹,客戶端通過路徑來訪問檔案,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data

(3)目錄結構及檔案分塊資訊(元資料)的管理由namenode節點承擔

——namenode是hdfs集群主節點,負責維護整個hdfs檔案系統的目錄樹,以及每乙個路徑(檔案)所對應的block塊資訊(block的id,及所在的datanode伺服器)

(4)檔案的各個block的儲存管理由datanode節點承擔

---- datanode是hdfs集群從節點,每乙個block都可以在多個datanode上儲存多個副本(副本數量也可以通過引數設定dfs.replication)

(5)hdfs是設計成適應一次寫入,多次讀出的場景,且不支援檔案的修改

概述1.

hdfs集群分為兩大角色:namenode、datanode

2.namenode負責管理整個檔案系統的元資料

3.datanode 負責管理使用者的檔案資料塊,檔案的各個block的儲存管理由datanode節點承擔,每乙個block都可以在多個datanode上儲存多個副本(副本數量也可以通過引數設定dfs.replication)。

4.檔案會按照固定的大小(blocksize)切成若干塊後分布式儲存在若干臺datanode上.預設大小在hadoop2.x版本中是128m,老版本中是64m塊的大小可以通過配置引數( dfs.blocksize)來規定。

5.datanode會定期向namenode匯報自身所儲存的檔案block資訊,而namenode則會負責保持檔案的副本數量

6.hdfs的內部工作機制對客戶端保持透明,客戶端請求訪問hdfs都是通過向namenode申請來進行

hdfs寫資料流程

1、根namenode通訊請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在

2、namenode返回是否可以上傳

3、client請求第乙個 block該傳輸到哪些datanode伺服器上

4、namenode返回3個datanode伺服器abc

5、client請求3臺dn中的一台a上傳資料(本質上是乙個rpc呼叫,建立pipeline),a收到請求會繼續呼叫b,然後b呼叫c,將真個pipeline建立完成,逐級返回客戶端

6、client開始往a上傳第乙個block(先從磁碟讀取資料放到乙個本地記憶體快取),以packet為單位,a收到乙個packet就會傳給b,b傳給c;a每傳乙個packet會放入乙個應答佇列等待應答

7、當乙個block傳輸完成之後,client再次請求namenode上傳第二個block的伺服器。

hdfs讀資料流程

1、跟namenode通訊查詢元資料,找到檔案塊所在的datanode伺服器

2、挑選一台datanode(就近原則,然後隨機)伺服器,請求建立socket流

3、datanode開始傳送資料(從磁碟裡面讀取資料放入流,以packet為單位來做校驗)

4、客戶端以packet為單位接收,現在本地快取,然後寫入目標檔案

namenode工作機制

namenode職責:

負責客戶端請求的響應

元資料的管理(查詢,修改)

元資料管理

namenode對資料的管理採用了三種儲存形式:

記憶體元資料(namesystem)

磁碟元資料映象檔案

資料操作日誌檔案(可通過日誌運算出元資料)

元資料儲存機制

a、記憶體中有乙份完整的元資料(記憶體meta data)

b、磁碟有乙個「準完整」的元資料映象(fsimage)檔案(在namenode的工作目錄中)

c、用於銜接記憶體metadata和持久化元資料映象fsimage之間的操作日誌(edits檔案)

元資料手動檢視

可以通過hdfs的乙個工具來檢視edits中的資訊

bin/hdfs oev -i edits -o edits.xml

bin/hdfs oiv -i fsimage_0000000000000000087 -p xml -o fsimage.xml

元資料的checkpoint

checkpoint操作的觸發條件配置引數

dfs.namenode.checkpoint.check.period=60  #檢查觸發條件是否滿足的頻率,60秒

dfs.namenode.checkpoint.dir=file://$/dfs/namesecondary

#以上兩個引數做checkpoint操作時,secondary namenode的本地工作目錄

dfs.namenode.checkpoint.edits.dir=$

dfs.namenode.checkpoint.max-retries=3  #最大重試次數

dfs.namenode.checkpoint.period=3600  #兩次checkpoint之間的時間間隔3600秒

dfs.namenode.checkpoint.txns=1000000 #兩次checkpoint之間最大的操作記錄

checkpoint的附帶作用

namenode和secondary namenode的工作目錄儲存結構完全相同,所以,當namenode故障退出需要重新恢復時,可以從secondary namenode的工作目錄中將fsimage拷貝到namenode的工作目錄,以恢復namenode的元資料

HDFS詳細介紹

hdfs hadoop distributed file system 分布式檔案系統,提供高吞吐量的應用程式資料訪問,對外部客戶機而言,hdfs 就像乙個傳統的分級檔案系統。可以建立 刪除 移動或重新命名檔案,等等。但是 hdfs 的架構是基於一組特定的節點構建的,這是由它自身的特點決定的。這些節...

HDFS結構介紹

hdfs hadoop distributed file system block 見圖 hdfs把檔案劃分成block儲存在不同節點上 預設128m 以前是64m,今後可能會變為256m dfs.blocksize屬性 hdfs site.xml 該屬性應該由檔案大小的數值分布來決定,比如80 的...

簡單快速入手hdfs

為什麼會存在這篇文章,是因為我產生了以下問題,為了理清關係並解決疑惑。什麼是hdfs?需要搭建什麼樣的環境?hdfs只是乙個名詞,還是需要人為的去搭建環境?很多文章都在說hdfs的原理,我就想知道需不需要我去搭建?來自hadoop官網的截圖 簡單點,hadoop處理大資料,那麼必然面對資料的儲存問題...