HDFS的寫資料流程以及異常寫資料流程

2022-01-30 06:05:39 字數 1108 閱讀 8903

①服務端啟動hdfs中的nn和dn程序

②客戶端建立乙個分布式檔案系統客戶端,由客戶端向nn傳送請求,請求上傳檔案

③nn處理請求,檢查客戶端是否有許可權上傳,路徑是否合法等

④檢查通過,nn響應客戶端可以上傳

⑤客戶端根據自己設定的塊大小,開始上傳第乙個塊,預設0-128m,nn根據客戶端上傳檔案的副本數(預設為3),根據機架感知策略選取指定數量的dn節點返回

⑥客戶端根據返回的dn節點,請求建立傳輸通道客戶端向最近(網路舉例最近)的dn節點發起通道建立請求,由這個dn節點依次向通道中的(距離當前dn距離最近)下乙個節點傳送建立通道請求,各個節點傳送響應 ,通道建立成功

⑦客戶端每讀取64k的資料,封裝為乙個packet(資料報,傳輸的基本單位),將packet傳送到通道的下乙個節點通道中的節點收到packet之後,落盤(檢驗)儲存,將packet傳送到通道的下乙個節點!每個節點在收到packet後,向客戶端傳送ack確認訊息!

⑧乙個塊的資料傳輸完成之後,通道關閉,dn向nn上報訊息,已經收到某個塊

⑨第乙個塊傳輸完成,第二塊開始傳輸,依次重複⑤-⑧,直到最後乙個塊傳輸完成,nn向客戶端響應傳輸完成!

客戶端關閉輸出流

①-⑥見上

⑦客戶端每讀取64k的資料,封裝為乙個packet,封裝成功的packet,放入到乙個佇列中,這個佇列稱為dataquene(待傳送資料報)在傳送時,先將dataquene中的packet按順序傳送,傳送後再放入到ackquene(正在傳送的佇列)。

每個節點在收到packet後,向客戶端傳送ack確認訊息!

如果乙個packet在傳送後,已經收到了所有dn返回的ack確認訊息,這個packet會在ackquene中刪除!

假如乙個packet在傳送後,在收到dn返回的ack確認訊息時超時,傳輸中止,ackquene中的packet會回滾到dataquene。

重新建立通道,剔除壞的dn節點。建立完成之後,繼續傳輸!

只要有乙個dn節點收到了資料,dn上報nn已經收完此塊,nn就認為當前塊已經傳輸成功!

nn會自動維護副本數!

HDFS寫資料流程

客戶端要向hdfs寫資料,首先要跟namenode通訊以確認可以寫檔案並獲得接收檔案block的datanode,然後,客戶端按順序將檔案逐個block傳遞給相應datanode,並由接收到block的datanode負責向其他datanode複製block的副本 客戶端執行寫入操作 當客戶端結束寫...

HDFS寫資料流程

1 客戶端向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。2 namenode返回是否可以上傳。3 客戶端請求第乙個 block上傳到哪幾個datanode伺服器上。4 namenode返回3個datanode節點,分別為dn1 dn2 dn3。5 客戶端請求...

Hdfs寫資料流程

我的hadoop集群是三颱伺服器,分別為hadoop101,hadoop102,hadoop103。其中,namenode部署在hadoop101上面,三颱伺服器分別部署乙個datanode,secondarynamenode在hadoop103上。一,客戶端建立乙個檔案系統物件向namenode申...