客戶端如何讀寫HDFS數(shù)據(jù)_第1頁
客戶端如何讀寫HDFS數(shù)據(jù)_第2頁
客戶端如何讀寫HDFS數(shù)據(jù)_第3頁
客戶端如何讀寫HDFS數(shù)據(jù)_第4頁
客戶端如何讀寫HDFS數(shù)據(jù)_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

主講:朱佳目錄0102客戶端如何讀取HDFS數(shù)據(jù)客戶端如何向HDFS寫數(shù)據(jù)客戶端如何讀取HDFS數(shù)據(jù)1客戶端如何讀取HDFS數(shù)據(jù)

客戶端讀取HDFS數(shù)據(jù)的過程如下:1.當(dāng)客戶端請求讀取HDFS數(shù)據(jù)時,首先與NameNode通信,獲取它想讀取數(shù)據(jù)的文件的數(shù)據(jù)塊位置。2.NameNode返回存儲前幾個塊副本的所有DataNode的地址,并將DataNode按照與客戶端的接近程度排列。3.客戶端然后按照呈現(xiàn)給它的順序從DataNode中讀取數(shù)據(jù)。如果第一個DataNode在讀取期間失敗(比如,DataNode已經(jīng)死掉),客戶端會自動連接到列表中的下一個DataNode并讀取該塊??蛻舳巳绾巫x取HDFS數(shù)據(jù)

4.當(dāng)客戶端讀取塊時,還會驗證塊的當(dāng)前校驗和與塊首次存儲在磁盤上時計算的原始校驗和是否相同。如果校驗和不同,則客戶端將再次移向列表中的其他DataNode以讀取數(shù)據(jù)??蛻舳诉€會通知NameNode發(fā)現(xiàn)了一個潛在的損壞塊,并且NameNode會將損壞的塊復(fù)制到另一個節(jié)點。注意,在默認(rèn)情況下,DataNode將每三周驗證一次其存儲的所有塊的校驗和。5.如果讀請求來自集群中的某個DataNode,則客戶端首先查看該DataNode自己是否能滿足讀取需求,這樣就沒必要去其他DataNode節(jié)點讀取數(shù)據(jù)。6.當(dāng)客戶端開始讀取頭幾個塊時,它會要求NameNode將下一組數(shù)據(jù)塊的位置發(fā)送給它。NameNode將為每個數(shù)據(jù)塊發(fā)送最佳(基于接近度)的DataNode列表。客戶端如何讀取HDFS數(shù)據(jù)

這里要記住的關(guān)鍵是,數(shù)據(jù)塊不經(jīng)過NameNode,它僅僅處理來自客戶端的關(guān)于數(shù)據(jù)塊位置的請求。客戶端與DataNode通信以檢索它們正在查找的數(shù)據(jù)??蛻舳苏埱驞ataNode讀取塊,DataNode讀取磁盤上的文件數(shù)據(jù)塊,并通過TCP套接字將數(shù)據(jù)傳輸?shù)娇蛻舳恕S捎贜ameNode實際上并不需要提供任何數(shù)據(jù),所以集群的可伸縮性得到了增強,因為只需向集群添加更多的DataNode,就可以處理更大的數(shù)據(jù)請求。客戶端如何向HDFS寫數(shù)據(jù)2客戶端如何向HDFS寫數(shù)據(jù)首先,需要了解當(dāng)客戶端想要將數(shù)據(jù)寫入HDFS時會發(fā)生什么情況。當(dāng)發(fā)出命令從命令行寫入HDFS,通過Web或以編程方式寫入數(shù)據(jù)時,都會涉及以下幾個步驟:1.客戶端做的第一件事是創(chuàng)建文件并連接到NameNode的命名空間。2.NameNode在驗證文件不存在并且客戶端有足夠的權(quán)限創(chuàng)建文件后,將新文件記錄在其元數(shù)據(jù)中,并將塊名稱和DataNodes列表發(fā)送到客戶端。此DataNode列表被稱為管道,若默認(rèn)復(fù)制因子為3,則在管道中有三個DataNode。管道指定客戶端可以放置塊副本的DataNode。客戶端如何向HDFS寫數(shù)據(jù)3.客戶端要寫到HDFS的文件被拆分成塊,這些塊存儲在HDFS上的各個DataNode上??蛻舳诉B接到管道中的第一個DataNode,并開始在該節(jié)點寫入數(shù)據(jù)塊。4.第一個DataNode將連接列表中的第二個DataNode,并在接收到數(shù)據(jù)塊時轉(zhuǎn)發(fā)給它。5.第二個DataNode依次連接并轉(zhuǎn)發(fā)數(shù)據(jù)到管道中的下一個DataNode。客戶端如何向HDFS寫數(shù)據(jù)6.當(dāng)所有三個(默認(rèn))副本都被完全寫入時,通過DataNode管道確認(rèn)數(shù)據(jù)包中繼到客戶端,以表示該數(shù)據(jù)塊已被成功寫入所有節(jié)點。客戶端將在此刻開始寫入下一個塊。7.當(dāng)所有塊副本都被寫入時,該塊由NameNode在編輯日志中提交并標(biāo)記為“written”8.當(dāng)客戶端將所有數(shù)據(jù)寫入文件后,關(guān)閉文件。這要求所有文件的塊都被復(fù)制了最少次數(shù)。如果在過程中有任何DataNode故障,客戶端需要等待關(guān)閉文件。9.客戶端通知NameNode文件寫入已成功完成??蛻舳巳绾蜗騂DFS寫數(shù)據(jù)需要注意以下事情:塊副本的寫入是異步完成的。客戶端不必將數(shù)據(jù)發(fā)送給它需要寫入的所有DataNode。只需將數(shù)據(jù)發(fā)送到NameNode提供的DataNodes列表中的其一即可,且該DataNode負(fù)責(zé)將數(shù)據(jù)塊發(fā)送到管道中的其他D

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論