HDFS讀取資料的流程

2021-10-24 23:16:12 字數 715 閱讀 4861

1、客戶端通過呼叫filesystem物件的open()來讀取希望開啟的檔案。

2、 client向namenode發起rpc請求,來確定請求檔案block所在的位置;

3、 namenode會視情況返回檔案的部分或者全部block列表,對於每個block,namenode 都會返回含有該 block 副本的 datanode 位址; 這些返回的 dn 位址,會按照集群拓撲結構得出 datanode 與客戶端的距離,然後進行排序,排序兩個規則:網路拓撲結構中距離 client 近的排靠前;心跳機制中超時匯報的 dn 狀態為 stale,這樣的排靠後;

4、 client 選取排序靠前的 datanode 來讀取 block,如果客戶端本身就是datanode,那麼將從本地直接獲取資料(短路讀取特性);

5、 底層上本質是建立 socket stream(fsdatainputstream),重複的呼叫父類 datainputstream 的 read 方法,直到這個塊上的資料讀取完畢;

6、並行讀取,若失敗重新讀取

7、 當讀完列表的 block 後,若檔案讀取還沒有結束,客戶端會繼續向namenode 獲取下一批的 block 列表;

8、返回後續block列表

9、 最終關閉讀流,並將讀取來所有的 block 會合併成乙個完整的最終檔案。

HDFS 讀取流程

先看圖 hdfs客戶端要讀取資料首先必須和namenode 建立連線,獲取datanode資訊。namenode會根據客戶端的實體地址返回乙個由近到遠的塊位址列表。客戶端拿到列表後和最近的進行連線讀取資料 hdfs中塊是由乙個完整的檔案分成多個塊,而每個塊可能儲存在不同機架上。每個塊中除了資料還儲存...

hdfs讀取資料的整體流程

hdfs讀取資料的整體流程 1,客戶端節點 獲取filesystem 2,filesystem去namenode上獲取要讀取的檔案塊位置。並且返回給客戶端節點 3,獲取到檔案的所有塊資訊以後,fsdatainputstream開始準備在不同的塊中讀取資料。4,fsdatainputstream內部有...

HDFS讀取流程和寫流程

讀 1.客戶端或者使用者通過呼叫 filesystem 物件的 open 方法開啟需要讀取的檔案,這對 hdfs 來說是常見乙個分布式檔案系統的乙個讀取例項。2.filesystem 通過遠端協議呼叫 namenode 確定檔案的前幾個 block 的位置。對於每乙個 block,namenode ...