溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

hdfs基本概念(設(shè)計(jì)思想 特性 工作機(jī)制 上傳下載 namenode存儲(chǔ)元數(shù)據(jù)機(jī)制)

發(fā)布時(shí)間:2020-07-09 16:14:57 來源:網(wǎng)絡(luò) 閱讀:582 作者:馬吉輝 欄目:大數(shù)據(jù)

2019/2/16 星期六

hdfs基本概念(設(shè)計(jì)思想 特性 工作機(jī)制 上傳下載 namenode存儲(chǔ)元數(shù)據(jù)機(jī)制)
1、hdfs總的設(shè)計(jì)思想:
設(shè)計(jì)目標(biāo):提高分布式并發(fā)處理數(shù)據(jù)的效率(提高并發(fā)度和移動(dòng)運(yùn)算到數(shù)據(jù))
分而治之:將大文件、大批量文件,分布式存放在大量獨(dú)立的服務(wù)器上,以便于采取分而治之的方式對(duì)海量數(shù)據(jù)進(jìn)行運(yùn)算分析;
重點(diǎn)概念:文件切塊,副本存放,元數(shù)據(jù),位置查詢,數(shù)據(jù)讀寫流

2、hdfs的shell操作 //見響應(yīng)的單獨(dú)文檔

3、hdfs的一些概念
Hdfs分布式文件系統(tǒng)的基本工作機(jī)制及相關(guān)概念解析 //見畫圖

hdfs基本概念(設(shè)計(jì)思想 特性 工作機(jī)制 上傳下載 namenode存儲(chǔ)元數(shù)據(jù)機(jī)制)

首先,它是一個(gè)文件系統(tǒng),有一個(gè)統(tǒng)一的命名空間——目錄樹, 客戶端訪問hdfs 文件時(shí)就是
通過指定這個(gè)目錄樹中的路徑來進(jìn)行
其次,它是分布式的,由很多服務(wù)器聯(lián)合起來實(shí)現(xiàn)功能;
? hdfs 文件系統(tǒng)會(huì)給客戶端提供一個(gè)統(tǒng)一的抽象目錄樹,Hdfs 中的文件都是分塊(block)
存儲(chǔ)的,塊的大小可以通過配置參數(shù)( dfs.blocksize)來規(guī)定,默認(rèn)大小在hadoop2.x 版本
中是128M,老版本中是64M
? 文件的各個(gè)block 由誰來進(jìn)行真實(shí)的存儲(chǔ)呢?----分布在各個(gè)datanode 服務(wù)節(jié)點(diǎn)上,而
且每一個(gè)block 都可以存儲(chǔ)多個(gè)副本(副本數(shù)量也可以通過參數(shù)設(shè)置dfs.replication,默
認(rèn)值是3)
? Hdfs 中有一個(gè)重要的角色:namenode,負(fù)責(zé)維護(hù)整個(gè)hdfs 文件系統(tǒng)的目錄樹,以及每
一個(gè)路徑(文件)所對(duì)應(yīng)的block 塊信息(block 的id,及所在的datanode 服務(wù)器)
? hdfs 是設(shè)計(jì)成適應(yīng)一次寫入,多次讀出的場景,并不支持文件的修改
(hdfs 并不適合用來做網(wǎng)盤應(yīng)用,因?yàn)?,不便修改,延遲大,網(wǎng)絡(luò)開銷大,成本太高)

hdfs 切片的定義 概念
1:定義一個(gè)切片大小:可以通過參數(shù)來調(diào)節(jié),默認(rèn)情況下等于“hdfs 中設(shè)置的blocksize”,通常是128M
2:獲取輸入數(shù)據(jù)目錄下所有待處理文件List
3:遍歷文件List,逐個(gè)逐個(gè)文件進(jìn)行切片
for(file:List)
對(duì)file 從0 偏移量開始切,每到128M 就構(gòu)成一個(gè)切片,比如a.txt(200M),就會(huì)被切成兩個(gè)切片: a.txt: 0-128M, a.txt :128M-256M
再比如b.txt(80M),就會(huì)切成一個(gè)切片, b.txt :0-80M

HDFS Block復(fù)制策略
–第1個(gè)副本放在客戶端所在節(jié)點(diǎn)
?如果是遠(yuǎn)程客戶端,block會(huì)隨機(jī)選擇節(jié)點(diǎn)
?系統(tǒng)會(huì)首先選擇空閑的DataNode節(jié)點(diǎn)
–第2個(gè)副本放在不同的機(jī)架節(jié)點(diǎn)上
–第3個(gè)副本放在與第2個(gè)副本同一機(jī)架的不同機(jī)器上
–很好的穩(wěn)定性、負(fù)載均衡,較好的寫入帶寬、讀取性能,塊均勻分布
–機(jī)架感知:將副本分配到不同的機(jī)架上,提高數(shù)據(jù)的高容錯(cuò)性
–以節(jié)點(diǎn)為備份對(duì)象

hdfs基本概念(設(shè)計(jì)思想 特性 工作機(jī)制 上傳下載 namenode存儲(chǔ)元數(shù)據(jù)機(jī)制)

4、特性:
容量可以線性擴(kuò)展
數(shù)據(jù)存儲(chǔ)高可靠
分布式運(yùn)算處理很方便
數(shù)據(jù)訪問延遲較大,不支持?jǐn)?shù)據(jù)的修改操作
適合一次寫入多次讀取的應(yīng)用場景

5、hdfs 的工作機(jī)制
HDFS 集群分為兩大角色:NameNode、DataNode
NameNode 負(fù)責(zé)管理整個(gè)文件系統(tǒng)的元數(shù)據(jù)
DataNode 負(fù)責(zé)管理用戶的文件數(shù)據(jù)塊

6、namenode 工作機(jī)制
namenode 職責(zé):
1、響應(yīng)客戶端請(qǐng)求 //客戶端去請(qǐng)求hdfs的時(shí)候都會(huì)先去找namenode
2、維護(hù)目錄樹 //客戶端去讀或者寫文件的時(shí)候都會(huì)去指定一個(gè)目錄,這個(gè)目錄是hdfs的目錄,這個(gè)目錄有namenode管理
3、管理元數(shù)據(jù)(查詢,修改) *****
//什么是元數(shù)據(jù)
文件的描述信息:某一個(gè)路徑的文件有幾個(gè)block,每一個(gè)block在那些datanode上面有存儲(chǔ),一個(gè)文件的副本數(shù)量是幾?這些信息就是元數(shù)據(jù),元數(shù)據(jù)很重要,不能發(fā)生丟失或者錯(cuò)誤,那么在客戶端請(qǐng)求的時(shí)候,就有可能請(qǐng)求不到。
提示:內(nèi)存中存儲(chǔ)了一份完整的元數(shù)據(jù),包括目錄樹結(jié)構(gòu),以及文件和數(shù)據(jù)塊和副本存儲(chǔ)地 的映射關(guān)系;

7、datanode 的工作機(jī)制
1、Datanode 工作職責(zé):
2、存儲(chǔ)管理用戶的文件塊數(shù)據(jù)
3、定期向namenode 匯報(bào)自身所持有的block 信息(通過心跳信息上報(bào))
4、上傳一個(gè)文件,觀察文件的block 具體的物理存放情況
在每一臺(tái)datanode 機(jī)器上的這個(gè)目錄:
/home/hadoop/app/hadoop-2.4.1/tmp/dfs/data/current/BP-193442119-192.168.2.120-1432457733
977/current/finalized


2019/2/18 星期一

hdfs 寫數(shù)據(jù)流程(put)

hdfs基本概念(設(shè)計(jì)思想 特性 工作機(jī)制 上傳下載 namenode存儲(chǔ)元數(shù)據(jù)機(jī)制)

1、根namenode 通信請(qǐng)求上傳文件,namenode 檢查目標(biāo)文件是否已存在,父目錄是否存在
2、namenode 返回是否可以上傳
3、client 請(qǐng)求第一個(gè)block 該傳輸?shù)侥男ヾatanode 服務(wù)器上
4、namenode 返回3 個(gè)datanode 服務(wù)器ABC
5、client 請(qǐng)求3 臺(tái)dn 中的一臺(tái)A 上傳數(shù)據(jù)(本質(zhì)上是一個(gè)RPC 調(diào)用,建立pipeline),A收到請(qǐng)求會(huì)繼續(xù)調(diào)用B,然后B 調(diào)用C,將真?zhèn)€pipeline 建立完成,逐級(jí)返回客戶端
6、client 開始往A 上傳第一個(gè)block(先從磁盤讀取數(shù)據(jù)放到一個(gè)本地內(nèi)存緩存),以packet為單位,A 收到一個(gè)packet 就會(huì)傳給B,B 傳給C;A 每傳一個(gè)packet 會(huì)放入一個(gè)應(yīng)答隊(duì)列等待應(yīng)答
7、當(dāng)一個(gè)block 傳輸完成之后,client 再次請(qǐng)求namenode 上傳第二個(gè)block 的服務(wù)器。

hdfs 讀數(shù)據(jù)流程(get)

hdfs基本概念(設(shè)計(jì)思想 特性 工作機(jī)制 上傳下載 namenode存儲(chǔ)元數(shù)據(jù)機(jī)制)

1、跟namenode 通信查詢?cè)獢?shù)據(jù),找到文件塊所在的datanode 服務(wù)器
2、挑選一臺(tái)datanode(就近原則,然后隨機(jī))服務(wù)器,請(qǐng)求建立socket 流
3、datanode 開始發(fā)送數(shù)據(jù)(從磁盤里面讀取數(shù)據(jù)放入流,以packet 為單位來做校驗(yàn))
4、客戶端以packet 為單位接收,現(xiàn)在本地緩存,然后寫入目標(biāo)文件

小結(jié):
在這里我們描述的是hdfs的讀寫數(shù)據(jù)的流程是比較順利的一種情況,這上面的每一個(gè)階段都有可能出現(xiàn)異常,那hdfs對(duì)于每個(gè)異常也是很完善的,容錯(cuò)性非常的高,這些異常處理的邏輯比較復(fù)雜,我們暫時(shí)不做深入的描述,搞懂正常的讀寫流程就ok了。


Hdfs中namenode管理元數(shù)據(jù)的機(jī)制 //元數(shù)據(jù)的 CheckPoint
如圖:

hdfs基本概念(設(shè)計(jì)思想 特性 工作機(jī)制 上傳下載 namenode存儲(chǔ)元數(shù)據(jù)機(jī)制)

hdfs 元數(shù)據(jù)是怎么存儲(chǔ)的?
A、內(nèi)存中有一份完整的元數(shù)據(jù)(特定數(shù)據(jù)結(jié)構(gòu))
B、磁盤有一個(gè)“準(zhǔn)完整”的元數(shù)據(jù)的鏡像文件
C、當(dāng)客戶端對(duì)hdfs 中的文件進(jìn)行新增或者修改操作,首先會(huì)在edits 文件中記錄操作日志,當(dāng)客戶端操作成功后,相應(yīng)的元數(shù)據(jù)會(huì)更新到內(nèi)存中;每隔一段時(shí)間,會(huì)由secondary namenode 將namenode 上積累的所有edits 和一個(gè)最新的fsimage 下載到本地,并加載到內(nèi)存進(jìn)行merge(這個(gè)過程稱為checkpoint)
D、checkpoint 操作的觸發(fā)條件配置參數(shù):
dfs.namenode.checkpoint.check.period=60 #檢查觸發(fā)條件是否滿足的頻率,60 秒
dfs.namenode.checkpoint.dir=file://${hadoop.tmp.dir}/dfs/namesecondary
#以上兩個(gè)參數(shù)做checkpoint 操作時(shí),secondary namenode 的本地工作目錄
dfs.namenode.checkpoint.edits.dir=${dfs.namenode.checkpoint.dir}
dfs.namenode.checkpoint.max-retries=3 #最大重試次數(shù)
dfs.namenode.checkpoint.period=3600 #兩次checkpoint 之間的時(shí)間間隔3600 秒
dfs.namenode.checkpoint.txns=1000000 #兩次checkpoint 之間最大的操作記錄
E、namenode 和secondary namenode 的工作目錄存儲(chǔ)結(jié)構(gòu)完全相同,所以,當(dāng)namenode故障退出需要重新恢復(fù)時(shí),可以從secondary namenode 的工作目錄中將fsimage 拷貝到namenode 的工作目錄,以恢復(fù)namenode 的元數(shù)據(jù)
F、可以通過hdfs 的一個(gè)工具來查看edits 中的信息
bin/hdfs oev -i edits -o edits.xml

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI