hdfs 寫資料 讀資料流程

2021-09-09 06:39:43 字數 942 閱讀 9019

客戶端(client)向namenode(nn)請求上傳檔案

nn檢視目錄樹,檢查目錄是否存在、檔案是否存在

nn返回是否可以上傳

(可以上傳)client告訴nn,要上傳資料塊1(block1)

nn檢視datanode(dn)資訊池,選出三颱dn(一般就近隨機一台、本機架一台、另乙個機架一台)

client請求dn1上傳資料(建立pipeline連線),dn1收到請求繼續呼叫n2,dn2呼叫dn3,完成連線後逐級返回client

client以包(packet)為單位向dn1上傳block1,dn1收到資料(讀取資料放到本地記憶體)後傳給dn2,dn2傳給dn3

傳完乙個塊後,接著重複步驟4,請求block2

補充注意(參考 ):

1.namenode實際客戶端只上傳乙個datanode,其餘兩個是namenode完成的。讓datenote自己複製的。然後複製完成以後逐級返回結果給namenode.如果2,3datanode複製失敗,再有namenode分配新的datanode位址。對於客戶端來說預設上傳乙個datanode就可以了,其餘的由datanode自己複製。

2.datanode切片是由客戶端完成的。datanode第二三個副本的上傳和第乙個上傳是非同步的。

client向nn請求讀取xx檔案

nn檢視這個檔案有幾個塊,分別在哪個dn上

client選擇乙個dn1(就近原則),請求讀取資料(建立socket流)

dn1返回block1資料,client以packet為單位接收資料,存到本地快取,然後寫到目標檔案

讀block2、block3

HDFS讀資料流程

1 使用 hdfs 提供的客戶端 client,向遠端的 namenode 發起 rpc 請求 2 namenode 會視情況返回檔案的全部 block 列表,對於每個 block,namenode 都會返回有該 block 拷貝的 datanode 位址 3 客戶端client會選取離客戶端最近的...

hdfs讀資料流程

2,客戶端挑選一台datanode 按照就近原則,返回的塊位址根據網路拓撲圖排序,距離客戶端進的排在前面 伺服器,建立連線,請求讀取資料 如果dn異常,則從第二優先的dn讀取資料,並且標記該dn異常,後續讀取塊的資料直接跳過該dn。3,datanode開始傳輸資料給客戶端 從磁碟讀取資料輸入流,以p...

Hdfs的讀資料流程

2 那麼node檢查許可權,檢查時候有該檔案,通過機架感知和負載情況,返回比較合適的三個datanode給client,如果檔案有多個塊,乙個塊一組datanode。3 client開啟乙個流,首先請求第乙個塊,首先請求第乙個節點,如果第乙個節點不可訪問,則請求第二個節點。4 datanode返回相...