HDFS的讀取流程 寫入流程 刪除流程

2021-09-10 21:41:31 字數 1230 閱讀 2142

讀流程:

1、客戶端通過rpc訪問namenode。(呼叫filesystem的open方法,獲取distributedfilesystem例項)

2、namenode查詢元資料,獲取元資料路徑,將檔案的全部或部分檔案塊的儲存路徑,放入佇列,傳送給客戶端。

3、客戶端收到佇列(fsdatainputstream物件,封裝為dfsinputstream,方便管理datanode與namenode資料流)後,依次遍歷佇列按hadoop的拓撲結構排序,讀取檔案塊資訊。

4、客戶端通過佇列(呼叫read方法)獲取第乙個檔案塊的儲存位置,(dfsinputstream)尋找最近的datanode讀取

5、讀取完成後校驗檔案塊的大小是否符合,如果符合,繼續讀取第二塊檔案塊,不符合,通知namenode當前檔案塊已損壞,從其他節點的獲取當前檔案塊

6、客戶端將這一批檔案塊讀取完後,再次請求namenode獲取下一批檔案塊的位址。

7、客戶端讀取鎖有檔案塊後,通知namenode關閉檔案。

寫流程

1、client發起rpc訪問namenode。

2、namenode收到請求後進行校驗:是否存在校驗,路徑校驗,許可權校驗。

3、所有校驗通過,計算檔案大小,,計算分塊數,分配對應的datanode,記錄元資料,將檔案塊的元資料新增到佇列,返回給客戶端。

4、客戶端收到佇列,將檔案以128m切塊,每塊封裝成packets物件,準備傳送。

5、客戶端取出第一塊位址,從位址中選出乙個距離較近的節點,將packets寫到對應的datanode上。

6、這個datanode通過pipeline(管道)將資料傳到其他datanode上 ,保證了hdfs副本數量

7、客戶端所有packets寫完之後,會給namenode傳送結束訊號。

8、namenode收到結束訊號後,將檔案關閉,同時將檔案設為不可寫入。

刪除流程

1、client傳送rpc請求到namenode。

2、namenode收到請求後將操作更新到edits檔案及記憶體中。

3、namenode更新完元資料後,給客戶端返回乙個ack訊號表示刪除成功,此時檔案並沒從datanode中刪除。

4、等datanode傳送心跳資訊時,namenode收到心跳資訊,檢驗是否與元資料一致

5、不一致,說明datanode刪除,namenode返回一條指令,讓對應的datanode刪除。

HDFS讀取和寫入流程

1 讀檔案的過程 首先 client 通過 file system 的 open 函式開啟檔案,distributed file system 用 rpc呼叫 namenode 節點,得到檔案的資料塊資訊。對於每乙個資料塊,namenode 節點返回儲存資料塊的資料節點的位址。distributed...

HDFS資料寫入流程

1 client 發起檔案寫入請求,通過 rpc 與 namenode 建立通訊,namenode檢查目標檔案,返回是否可以上傳 2 client 請求第乙個 block 該傳輸到哪些 datanode 伺服器上 3 namenode 根據副本數量和副本放置策略進行節點分配,返回datanode節點...

HDFS寫入與讀取流程

那麼問題來了,如果他們之間的乙個datanode突然壞掉了怎麼辦。1 如果傳輸過程中,有某個datanode出現了故障,那麼當前的pipeline會被關閉,出現故障的datanode會從當前的pipeline中移除,剩餘的block會繼續剩下的datanode中繼續以pipeline的形式傳輸,同時...