前言:
成都創(chuàng)新互聯(lián)是一家專業(yè)提供克什克騰企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為克什克騰眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
HDFS 是一個(gè)能夠面向大規(guī)模數(shù)據(jù)使用的,可進(jìn)行擴(kuò)展的文件存儲(chǔ)與傳遞系統(tǒng)。是一種允許文件通過網(wǎng)絡(luò)在多臺(tái)主機(jī)上分享的文件系統(tǒng),可讓多機(jī)器上的多用戶分享文件和 存儲(chǔ)空間。讓實(shí)際上是通過網(wǎng)絡(luò)來訪問文件的動(dòng)作,由程序與用戶看來,就像是訪問本地的磁盤一般。即使系統(tǒng)中有某些節(jié)點(diǎn)脫機(jī),整體來說系統(tǒng)仍然可以持續(xù)運(yùn)作 而不會(huì)有數(shù)據(jù)損失。
HDFS寫流程:
- 1.初始化FileSystem,客戶端調(diào)用create()來創(chuàng)建文件
- 2.FileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點(diǎn),在文件系統(tǒng)的命名空間中創(chuàng)建一個(gè)新的文件,元數(shù)據(jù)節(jié)點(diǎn)首先確定文件原來不存在,并且客戶端有創(chuàng)建文件的權(quán)限,然后創(chuàng)建新文件。
- 3.FileSystem返回DFSOutputStream,客戶端用于寫數(shù)據(jù),客戶端開始寫入數(shù)據(jù)。
- 4.DFSOutputStream將數(shù)據(jù)分成塊,寫入data queue。data queue由Data Streamer讀取,并通知元數(shù)據(jù)節(jié)點(diǎn)分配數(shù)據(jù)節(jié)點(diǎn),用來存儲(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)。
- 5.DFSOutputStream為發(fā)出去的數(shù)據(jù)塊保存了ack queue,等待pipeline中的數(shù)據(jù)節(jié)點(diǎn)告知數(shù)據(jù)已經(jīng)寫入成功。
- 6.當(dāng)客戶端結(jié)束寫入數(shù)據(jù),則調(diào)用stream的close函數(shù)。此操作將所有的數(shù)據(jù)塊寫入pipeline中的數(shù)據(jù)節(jié)點(diǎn),并等待ack queue返回成功。最后通知元數(shù)據(jù)節(jié)點(diǎn)寫入完畢。
- 7.如果數(shù)據(jù)節(jié)點(diǎn)在寫入的過程中失敗,關(guān)閉pipeline,將ack queue中的數(shù)據(jù)塊放入data queue的開始,當(dāng)前的數(shù)據(jù)塊在已經(jīng)寫入的數(shù)據(jù)節(jié)點(diǎn)中被元數(shù)據(jù)節(jié)點(diǎn)賦予新的標(biāo)示,則錯(cuò)誤節(jié)點(diǎn)重啟后能夠察覺其數(shù)據(jù)塊是過時(shí)的,會(huì)被刪除。失敗的數(shù)據(jù)節(jié)點(diǎn)從pipeline中移除,另外的數(shù)據(jù)塊則寫入pipeline中的另外兩個(gè)數(shù)據(jù)節(jié)點(diǎn)。元數(shù)據(jù)節(jié)點(diǎn)則被通知此數(shù)據(jù)塊是復(fù)制塊數(shù)不足,將來會(huì)再創(chuàng)建第三份備份。

HDFS讀流程:
- 1.初始化FileSystem,然后客戶端(client)用FileSystem的open()函數(shù)打開文件
- 2.FileSystem用RPC調(diào)用元數(shù)據(jù)節(jié)點(diǎn),得到文件的數(shù)據(jù)塊信息,對于每一個(gè)數(shù)據(jù)塊,元數(shù)據(jù)節(jié)點(diǎn)返回保存數(shù)據(jù)塊的數(shù)據(jù)節(jié)點(diǎn)的地址。
- 3.FileSystem返回FSDataInputStream給客戶端,用來讀取數(shù)據(jù),客戶端調(diào)用stream的read()函數(shù)開始讀取數(shù)據(jù)。
- 4.DFSInputStream連接保存此文件第一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn),data從數(shù)據(jù)節(jié)點(diǎn)讀到客戶端(client)
- 5.當(dāng)此數(shù)據(jù)塊讀取完畢時(shí),DFSInputStream關(guān)閉和此數(shù)據(jù)節(jié)點(diǎn)的連接,然后連接此文件下一個(gè)數(shù)據(jù)塊的最近的數(shù)據(jù)節(jié)點(diǎn)。
- 6.當(dāng)客戶端讀取完畢數(shù)據(jù)的時(shí)候,調(diào)用FSDataInputStream的close函數(shù)。
- 7.在讀取數(shù)據(jù)的過程中,如果客戶端在與數(shù)據(jù)節(jié)點(diǎn)通信出現(xiàn)錯(cuò)誤,則嘗試連接包含此數(shù)據(jù)塊的下一個(gè)數(shù)據(jù)節(jié)點(diǎn)。

參考:
https://blog.csdn.net/gaijianwei/article/details/45918337
https://www.cnblogs.com/xubiao/p/5579080.html
網(wǎng)頁名稱:HDFS讀寫流程簡介
標(biāo)題來源:http://chinadenli.net/article28/joegjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、建站公司、網(wǎng)站制作、搜索引擎優(yōu)化、網(wǎng)站策劃、Google
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源:
創(chuàng)新互聯(lián)