真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HDFS工作機(jī)制是什么

這篇文章將為大家詳細(xì)講解有關(guān)HDFS工作機(jī)制是什么,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、喀什ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的喀什網(wǎng)站制作公司

一、HDFS是什么

HDFS(Hadoop Distributed File System)分布式文件系統(tǒng),它是谷歌的GFS提出后出現(xiàn)的一種用戶級文件系統(tǒng)。提供了一個高度容錯和高吞吐量的海量數(shù)據(jù)存儲解決方案。

HDFS工作機(jī)制是什么

hadoop生態(tài)-HDFS的核心位置

二、漫畫看懂HDFS騷操作

HDFS工作機(jī)制是什么

2.1 寫操作

HDFS工作機(jī)制是什么

1

HDFS工作機(jī)制是什么

2

HDFS工作機(jī)制是什么

3

2.2 讀操作

HDFS工作機(jī)制是什么

2.3 容錯性

常見錯誤種類

HDFS工作機(jī)制是什么

節(jié)點(diǎn)故障

HDFS工作機(jī)制是什么

通信故障和數(shù)據(jù)損壞

HDFS工作機(jī)制是什么

讀寫故障

HDFS工作機(jī)制是什么

HDFS工作機(jī)制是什么

HDFS工作機(jī)制是什么

以上是漫畫解說部分,主要涵蓋了讀寫流程已經(jīng)故障處理。下面會有具體的架構(gòu)講解。

三、HDFS架構(gòu)原理

HDFS工作機(jī)制是什么

3.1 HDFS幾個主要概念

3.1.1 NameNode

  • 維護(hù)和管理DataNodes

  • 管理文件系統(tǒng)namespace并控制client對應(yīng)的訪問權(quán)限

  • 記錄所有存儲在集群中的文件的元信息。eg: blocks存儲的位置、文件的大小、權(quán)限、文件結(jié)構(gòu)等,有兩個文件和元數(shù)據(jù)關(guān)聯(lián)著
    FsImage
    保存了最新的元數(shù)據(jù)檢查點(diǎn),包含了整個HDFS文件系統(tǒng)的所有目錄和文件的信息。對于文件來說包括了數(shù)據(jù)塊描述信息、修改時間、訪問時間等;對于目錄來說包括修改時間、訪問權(quán)限控制信息(目錄所屬用戶,所在組)等。
    一般開始時namenode的操作都放在EditLog中,然后通過異步更新。
    EditLog
    記錄最近通過namenode對文件系統(tǒng)的所有修改操作。

  • 記錄文件系統(tǒng)的所有操作元數(shù)據(jù)。 存儲在 EditLogs

  • 維護(hù)著與DataNodes的心跳檢測

  • DataNodes磁盤存儲均衡、DataNodes故障轉(zhuǎn)移

3.1.2 DataNode

數(shù)據(jù)存儲節(jié)點(diǎn)

3.1.3 Secondary NameNode

HDFS工作機(jī)制是什么

它的主要職責(zé)

  • 備用節(jié)點(diǎn),也稱為standby namenode。NameNode是HDFS的大腦核心,一旦NameNode出現(xiàn)不可用,那么整個HDFS集群將不可用,Secondary NameNode作為NameNode的備用節(jié)點(diǎn),進(jìn)行NameNode容錯

  • 負(fù)責(zé)合并Editlogs和FsImage

  • 定時從 namenode 下載Editlogs并和現(xiàn)有FsImage進(jìn)行合并,然后將合并后的FsImage更新到namenode

FailoverController
故障切換器,管理著將活動namenode轉(zhuǎn)移為備用namenode的過程,默認(rèn)通過ZK來確保僅有一個活躍namenode。每一個namenode都有一個運(yùn)行著的故障轉(zhuǎn)移器。

3.1.4 Balancer

用于平衡DataNode集群之間各節(jié)點(diǎn)的磁盤利用率。

3.1.5 HttpFS

提供Http方式訪問和操作HDFS功能

HDFS工作機(jī)制是什么

上面幾個概念的拓?fù)鋱D

3.2 Block數(shù)據(jù)塊

HDFS里的數(shù)據(jù)都是以blocks分散在DataNodes。
通常,文件系統(tǒng)我們存放數(shù)據(jù)都是以一個blocks集進(jìn)行存儲,HDFS也是如此。
在 hadoop 集群中,每個 block 的默認(rèn)大小為 128M(此處指 hadoop 2.x 版本,hadoop 1.x 版本為 64M),也可以通過配置進(jìn)行修改

dfs.block.size或 dfs.blocksize =64M

HDFS 不會將每個文件存儲在配置的 block 大小的確切倍數(shù)中,比如一個 514M 的文件 example.txt,下圖所示,假設(shè) block 大小為默認(rèn)的 128M,那么將會創(chuàng)建 5 個block,前 4 個 block 大小為 128M,但是最后一個 block 的大小則僅為 2M。

HDFS工作機(jī)制是什么

block大小的設(shè)置,如果太小會產(chǎn)生太多的blocks,這樣元數(shù)據(jù)就會很多,從而使管理blocks和元數(shù)據(jù)產(chǎn)生巨大開銷,增加NameNode和DataNode的負(fù)載。

3.3 寫原理

假如我們要一個文件名字“example.txt”,248M。

HDFS工作機(jī)制是什么

假設(shè)block.size設(shè)置的128M,因此client會把該文件切分成兩個block,分布是 128M和120M。

每當(dāng)向HDFS寫數(shù)據(jù)的時候,都遵循下面的幾個流程

  • HDFS client 向NameNode 發(fā)送 兩個blocks(blockA、blockB)的寫入請求

  • NameNode給client進(jìn)行寫入授權(quán)并提供用來進(jìn)行存儲和復(fù)制的DataNodes IP

  • DataNodes基于HDFS可用性、復(fù)制因子和機(jī)架感知的選擇是完全隨機(jī)的

  • 假設(shè)復(fù)制因子設(shè)置的是3,那么NameNode將為每個blocks提供3個DataNodes IP。 相對每個block提供的3個DataNodes都是唯一的。假設(shè)NameNode提供的DataNodes列表如下:

For Block A, list A = {IP of DataNode 1, IP of DataNode 4, IP of DataNode 6}
For Block B, set B = {IP of DataNode 3, IP of DataNode 7, IP of DataNode 9}

  • 每個block將在三個不同的DataNode進(jìn)行復(fù)制,維持整個集群的復(fù)制因子一致性

  • 接下來整個數(shù)據(jù)將會經(jīng)歷下面三個階段:1建立管道 2數(shù)據(jù)流與復(fù)制 3管道關(guān)閉及確認(rèn)

3.3.1 建立管道

client在blocks寫入之前會確保提供的DataNodes是否已經(jīng)做好接受數(shù)據(jù)的準(zhǔn)備。在這樣的情況下,client會連接該block列表中的各個DataNodes,為每個block建一個管道。以BlockA舉例,它的DN(DataNode)列表是 { DN 1 IP, DN 4 IP, DN 6 IP }

HDFS工作機(jī)制是什么

如上圖,大概有一下幾個步驟:

  • client 拿著 blockA 向 NameNode發(fā)起寫請求

  • NameNode返回一組可供存儲和復(fù)制的DN IP列表

  • client向 DN1 進(jìn)行寫入準(zhǔn)備確認(rèn),同時會告訴DN1接下來要進(jìn)行復(fù)制的DN4和DN6的IP

  • DN1 會向 DN4發(fā)起寫入準(zhǔn)備確認(rèn),依次類推DN4給DN6發(fā)送確認(rèn)

  • DN6 確認(rèn)完畢回傳給 DN4,DN4確認(rèn)后會將自己以及DN6的確認(rèn)信息給DN1,最后DN1將三個DN的確認(rèn)結(jié)果答復(fù)給client

  • 管道建立完畢,client將開始進(jìn)行數(shù)據(jù)復(fù)制或者數(shù)據(jù)處理

3.3.2 數(shù)據(jù)流與復(fù)制

當(dāng)client與DataNodes之間的管道建立之后,client將開始將推送數(shù)據(jù)到管道。我們這里假設(shè)的復(fù)制因子是3,所以blockA將被復(fù)制三份,但是注意的是client只會將blockA推送到DN1,然后由DataNodes自己按照順序進(jìn)行復(fù)制。

HDFS工作機(jī)制是什么

如上圖所示,整個復(fù)制過程步驟如下:

  • client 將blockA寫入DN1,接著DN1連接DN4

  • DN1通過管道向DN4復(fù)制數(shù)據(jù)

  • DN4數(shù)據(jù)寫完后會繼續(xù)連接DN6進(jìn)行最后一份數(shù)據(jù)的復(fù)制

3.3.3 管道關(guān)閉和確認(rèn)

當(dāng)block復(fù)制3份完成后,client和NameNode會有一系列的ack確認(rèn)來保證數(shù)據(jù)被成功寫入。
如下圖所示,DataNodes的確認(rèn)和寫入的順序恰好相反,DN6寫入成功后會給DN4發(fā)送確認(rèn)消息,接著DN4會將DN6和自己的確認(rèn)消息發(fā)送給DN1,最后DN1將所有的確認(rèn)消息發(fā)送給client,client再給NameNode確認(rèn)block寫入成功,然后NameNode更新對應(yīng)的元數(shù)據(jù),最終client關(guān)閉管道。

HDFS工作機(jī)制是什么

以上的所有流程,我們都是針對blockA進(jìn)行解說,而blockB是完全一樣的,blockB有自己的管道、自己的DataNodes并行的進(jìn)行寫入。

HDFS工作機(jī)制是什么

如上圖所示,有兩個管道分別為blokA和blockB提供,他們各自的流程順序如下:

  • For Block A: 1A -> 2A -> 3A -> 4A

  • For Block B: 1B -> 2B -> 3B -> 4B -> 5B -> 6B

3.4 讀原理

讀的原理相對寫更容易理解,我們同樣以example.txt舉例。

HDFS工作機(jī)制是什么

如上圖所示,有以下幾個步驟

  • client請求NameNode 要讀取example.txt的數(shù)據(jù),NameNode查詢元數(shù)據(jù),將該文件對應(yīng)的所有block及對應(yīng)的DataNode列表返回

  • client并行的分別從DataNodes讀取blockA和blockB的數(shù)據(jù)。為了保證低延遲和節(jié)約帶寬,通常會選擇離client近的副本進(jìn)行讀取,如果可能,會選擇和閱讀節(jié)點(diǎn)在同一個機(jī)架上的副本(如圖中所示,選擇了Rack1, blockA和blockB都有對應(yīng)的副本)

  • client一旦獲取到所有的block,就會開始組裝成文件,并返回。

關(guān)于“HDFS工作機(jī)制是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


新聞名稱:HDFS工作機(jī)制是什么
網(wǎng)頁URL:http://weahome.cn/article/psegjp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部