HDFS寫入與讀取流程

2021-09-02 21:40:12 字數 1295 閱讀 9969

那麼問題來了,如果他們之間的乙個datanode突然壞掉了怎麼辦。

1、如果傳輸過程中,有某個datanode出現了故障,那麼當前的pipeline會被關閉,出現故障的datanode會從當前的pipeline中移除,剩餘的block會繼續剩下的datanode中繼續以pipeline的形式傳輸,同時namenode會分配乙個新的datanode,保持replicas設定的數量。

2、關閉pipeline,將ack queue中的資料塊放入data queue的開始。

3、當前的資料塊在已經寫入的資料節點中被元資料節點賦予新的標示,則錯誤節點重啟後能夠察覺其資料塊是過時的,會被刪除。

4、失敗的資料節點從pipeline中移除,另外的資料塊則寫入pipeline中的另外兩個資料節點。

5、元資料節點則被通知此資料塊是複製塊數不足,將來會再建立第三份備份。

6、客戶端呼叫create()來建立檔案

7、distributedfilesystem用rpc呼叫元資料節點,在檔案系統的命名空間中建立乙個新的檔案。

8、元資料節點首先確定檔案原來不存在,並且客戶端有建立檔案的許可權,然後建立新檔案。

9、distributedfilesystem返回dfsoutputstream,客戶端用於寫資料。

10、客戶端開始寫入資料,dfsoutputstream將資料分成塊,寫入data queue。

11、data queue由data streamer讀取,並通知元資料節點分配資料節點,用來儲存資料塊(每塊預設複製3塊)。分配的資料節點放在乙個pipeline裡。

12、data streamer將資料塊寫入pipeline中的第乙個資料節點。第乙個資料節點將資料塊傳送給第二個資料節點。第二個資料節點將資料傳送給第三個資料節點。

13、dfsoutputstream為發出去的資料塊儲存了ack queue,等待pipeline中的資料節點告知資料已經寫入成功。

HDFS讀取和寫入流程

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

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

讀流程 1 客戶端通過rpc訪問namenode。呼叫filesystem的open方法,獲取distributedfilesystem例項 2 namenode查詢元資料,獲取元資料路徑,將檔案的全部或部分檔案塊的儲存路徑,放入佇列,傳送給客戶端。3 客戶端收到佇列 fsdatainputstre...

hdfs檔案寫入與讀取過程

client向namenode請求上傳a.txt namenode檢測client的上傳許可權 namenode回答client是否可以上傳 client將檔案按照block size大小將檔案分為幾份,並向namenode請求上傳乙個block namenode根據datanode上的block資...