溫馨提示×

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

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

HDFS基本概念是什么

發(fā)布時(shí)間:2021-12-09 09:47:39 來(lái)源:億速云 閱讀:426 作者:小新 欄目:云計(jì)算

這篇文章主要為大家展示了“HDFS基本概念是什么”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“HDFS基本概念是什么”這篇文章吧。

一、HDFS基本概念

   1、數(shù)據(jù)塊

HDFS默認(rèn)的最基本的存儲(chǔ)單位是64M的數(shù)據(jù)塊,這個(gè)數(shù)據(jù)塊可以理解和一般的文件里面的分塊是一樣的

   2、元數(shù)據(jù)節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)

元數(shù)據(jù)節(jié)點(diǎn)(namenode)用來(lái)管理文件系統(tǒng)的命名空間,它將所有的文件和文件夾的元數(shù)據(jù)保存在一個(gè)文件系統(tǒng)樹(shù)中。

數(shù)據(jù)節(jié)點(diǎn)(datanode)就是用來(lái)存儲(chǔ)數(shù)據(jù)文件的。

從元數(shù)據(jù)節(jié)點(diǎn)(secondarynamenode)不是我們所想象的元數(shù)據(jù)節(jié)點(diǎn)的備用節(jié)點(diǎn),其實(shí)它主要的功能是主要功能就是周期性將元數(shù)據(jù)節(jié)點(diǎn)的命名空間鏡像文件和修改日志合并,以防日志文件過(guò)大。

這里先來(lái)弄清楚這個(gè)三種節(jié)點(diǎn)的關(guān)系吧!其實(shí)元數(shù)據(jù)節(jié)點(diǎn)上存儲(chǔ)的東西就相當(dāng)于一般文件系統(tǒng)中的目錄,也是有命名空間的映射文件以及修改的日志,只是分布式文件系統(tǒng)就將數(shù)據(jù)分布在各個(gè)機(jī)器上進(jìn)行存儲(chǔ)罷了,下面你看看這幾張說(shuō)明圖應(yīng)該就能明白了!

 
HDFS基本概念是什么
 
HDFS基本概念是什么
 

 
HDFS基本概念是什么
 

Namenode與secondary namenode之間的進(jìn)行checkpoint的過(guò)程。

3、HDFS中的數(shù)據(jù)流

讀文件

客戶端(client)用FileSystem的open()函數(shù)打開(kāi)文件,DistributedFileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點(diǎn),得到文件的數(shù)據(jù)塊信息。對(duì)于每一個(gè)數(shù)據(jù)塊,元數(shù)據(jù)節(jié)點(diǎn)返回保存數(shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)的地址。DistributedFileSystem返回FSDataInputStream給客戶端,用來(lái)讀取數(shù)據(jù)。客戶端調(diào)用stream的read()函數(shù)開(kāi)始讀取數(shù)據(jù)。DFSInputStream連接保存此文件第一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn)。Data從數(shù)據(jù)節(jié)點(diǎn)讀到客戶端(client),當(dāng)此數(shù)據(jù)塊讀取完畢時(shí),DFSInputStream關(guān)閉和此數(shù)據(jù)節(jié)點(diǎn)的連接,然后連接此文件下一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn)。當(dāng)客戶端讀取完畢數(shù)據(jù)的時(shí)候,調(diào)用FSDataInputStream的close函數(shù)。

整個(gè)過(guò)程就是如圖所示:

 
HDFS基本概念是什么
 

寫文件

客戶端調(diào)用create()來(lái)創(chuàng)建文件,DistributedFileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點(diǎn),在文件系統(tǒng)的命名空間中創(chuàng)建一個(gè)新的文件。元數(shù)據(jù)節(jié)點(diǎn)首先確定文件原來(lái)不存在,并且客戶端有創(chuàng)建文件的權(quán)限,然后創(chuàng)建新文件。DistributedFileSystem返回DFSOutputStream,客戶端用于寫數(shù)據(jù)??蛻舳碎_(kāi)始寫入數(shù)據(jù),DFSOutputStream將數(shù)據(jù)分成塊,寫入data queue。Data queue由Data Streamer讀取,并通知元數(shù)據(jù)節(jié)點(diǎn)分配數(shù)據(jù)節(jié)點(diǎn),用來(lái)存儲(chǔ)數(shù)據(jù)塊(每塊默認(rèn)復(fù)制3塊)。分配的數(shù)據(jù)節(jié)點(diǎn)放在一個(gè)pipeline里。Data Streamer將數(shù)據(jù)塊寫入pipeline中的第一個(gè)數(shù)據(jù)節(jié)點(diǎn)。第一個(gè)數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)塊發(fā)送給第二個(gè)數(shù)據(jù)節(jié)點(diǎn)。第二個(gè)數(shù)據(jù)節(jié)點(diǎn)將數(shù)據(jù)發(fā)送給第三個(gè)數(shù)據(jù)節(jié)點(diǎn)。DFSOutputStream為發(fā)出去的數(shù)據(jù)塊保存了ack queue,等待pipeline中的數(shù)據(jù)節(jié)點(diǎn)告知數(shù)據(jù)已經(jīng)寫入成功。如果數(shù)據(jù)節(jié)點(diǎn)在寫入的過(guò)程中失?。宏P(guān)閉pipeline,將ack queue中的數(shù)據(jù)塊放入data queue的開(kāi)始。

整個(gè)過(guò)程如圖所示:


HDFS基本概念是什么
 

HDFS構(gòu)架與設(shè)計(jì)

    Hadoop也是一個(gè)能夠分布式處理大規(guī)模海量數(shù)據(jù)的軟件框架,這一切都是在可靠、高效、可擴(kuò)展的基礎(chǔ)上。Hadoop的可靠性——因?yàn)镠adoop假設(shè)計(jì)算元素和存儲(chǔ)會(huì)出現(xiàn)故障,因?yàn)樗S護(hù)多個(gè)工作數(shù)據(jù)副本,在出現(xiàn)故障時(shí)可以對(duì)失敗的節(jié)點(diǎn)重新分布處理。Hadoop的高效性——在MapReduce的思想下,Hadoop是并行工作的,以加快任務(wù)處理速度。Hadoop的可擴(kuò)展——依賴于部署Hadoop軟件框架計(jì)算集群的規(guī)模,Hadoop的運(yùn)算是可擴(kuò)展的,具有處理PB級(jí)數(shù)據(jù)的能力。

      Hadoop 主要由HDFS(Hadoop Distributed File System)和MapReduce 引擎兩部分組成。最底部是HDFS,它存儲(chǔ)Hadoop 集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件。HDFS 的上一層是MapReduce 引擎,該引擎由JobTrackers 和TaskTrackers組成。

  HDFS 可以執(zhí)行的操作有創(chuàng)建、刪除、移動(dòng)或重命名文件等,架構(gòu)類似于傳統(tǒng)的分級(jí)文件系統(tǒng)。需要注意的是,HDFS 的架構(gòu)基于一組特定的節(jié)點(diǎn)而構(gòu)建(參見(jiàn)圖2),這是它自身的特點(diǎn)。HDFS 包括唯一的NameNode,它在HDFS 內(nèi)部提供元數(shù)據(jù)服務(wù);DataNode 為HDFS 提供存儲(chǔ)塊。由于NameNode 是唯一的,這也是HDFS 的一個(gè)弱點(diǎn)(單點(diǎn)失?。?。一旦NameNode 故障,后果可想而知。

1、HDFS構(gòu)架(如圖所示)


HDFS基本概念是什么
 

2、HDFS的設(shè)計(jì)

1)錯(cuò)誤檢測(cè)和快速、自動(dòng)的恢復(fù)是HDFS的核心架構(gòu)目標(biāo)。

2)比之關(guān)注數(shù)據(jù)訪問(wèn)的低延遲問(wèn)題,更關(guān)鍵的在于數(shù)據(jù)訪問(wèn)的高吞吐量。

3)HDFS應(yīng)用對(duì)文件要求的是write-one-read-many訪問(wèn)模型。

4)移動(dòng)計(jì)算的代價(jià)比之移動(dòng)數(shù)據(jù)的代價(jià)低。

3、文件系統(tǒng)的namespace

Namenode維護(hù)文件系統(tǒng)的namespace,一切對(duì)namespace和文件屬性進(jìn)行修改的都會(huì)被namenode記錄下來(lái),連文件副本的數(shù)目稱為replication因子,這個(gè)也是由namenode記錄的。

4、數(shù)據(jù)復(fù)制

Namenode全權(quán)管理block的復(fù)制,它周期性地從集群中的每個(gè)Datanode接收心跳包和一個(gè)Blockreport。心跳包的接收表示該Datanode節(jié)點(diǎn)正常工作,而B(niǎo)lockreport包括了該Datanode上所有的block組成的列表。HDFS采用一種稱為rack-aware的策略來(lái)改進(jìn)數(shù)據(jù)的可靠性、有效性和網(wǎng)絡(luò)帶寬的利用。完成對(duì)副本的存放。

5、文件系統(tǒng)元數(shù)據(jù)的持久化

Namenode在內(nèi)存中保存著整個(gè)文件系統(tǒng)namespace和文件Blockmap的映像。這個(gè)關(guān)鍵的元數(shù)據(jù)設(shè)計(jì)得很緊湊,因而一個(gè)帶有4G內(nèi)存的 Namenode足夠支撐海量的文件和目錄。當(dāng)Namenode啟動(dòng)時(shí),它從硬盤中讀取Editlog和FsImage,將所有Editlog中的事務(wù)作用(apply)在內(nèi)存中的FsImage ,并將這個(gè)新版本的FsImage從內(nèi)存中flush到硬盤上,然后再truncate這個(gè)舊的Editlog,因?yàn)檫@個(gè)舊的Editlog的事務(wù)都已經(jīng)作用在FsImage上了。這個(gè)過(guò)程稱為checkpoint。在當(dāng)前實(shí)現(xiàn)中,checkpoint只發(fā)生在Namenode啟動(dòng)時(shí),在不久的將來(lái)我們將實(shí)現(xiàn)支持周期性的checkpoint。

6、通信協(xié)議

所有的HDFS通訊協(xié)議都是構(gòu)建在TCP/IP協(xié)議上??蛻舳送ㄟ^(guò)一個(gè)可配置的端口連接到Namenode,通過(guò)ClientProtocol與 Namenode交互。而Datanode是使用DatanodeProtocol與Namenode交互。從ClientProtocol和 Datanodeprotocol抽象出一個(gè)遠(yuǎn)程調(diào)用(RPC),在設(shè)計(jì)上,Namenode不會(huì)主動(dòng)發(fā)起RPC,而是是響應(yīng)來(lái)自客戶端和 Datanode 的RPC請(qǐng)求。

以上是“HDFS基本概念是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

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

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

AI