HDFS讀寫流程(重點)

2021-10-07 21:55:22 字數 1768 閱讀 5183

異常寫流程

讀資料流程

①服務端啟動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向客戶端響應傳輸完成!

⑩客戶端關閉輸出流

1)客戶端通過distributed filesystem模組向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。

2)namenode返回是否可以上傳。

3)客戶端請求第乙個 block上傳到哪幾個datanode伺服器上。

4)namenode返回3個datanode節點,分別為dn1、dn2、dn3。

5)客戶端通過fsdataoutputstream模組請求dn1上傳資料,dn1收到請求會繼續呼叫dn2,然後dn2呼叫dn3,將這個通訊管道建立完成。

6)dn1、dn2、dn3逐級應答客戶端。

7)客戶端開始往dn1上傳第乙個block(先從磁碟讀取資料放到乙個本地記憶體快取),以packet為單位,dn1收到乙個packet就會傳給dn2,dn2傳給dn3;dn1每傳乙個packet會放入乙個應答佇列等待應答。

8)當乙個block傳輸完成之後,客戶端再次請求namenode上傳第二個block的伺服器。(重複執行3-7步)。

①-⑥見上

⑦客戶端每讀取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中的nn和dn程序 客戶端建立乙個分布式檔案系統客戶端,由客戶端向nn傳送請求,請求上傳檔案 nn處理請求,檢查客戶端是否有許可權上傳,路徑是否合法等 檢查通過,nn響應客戶端可以上傳 客戶端根據自己設定的塊大小,開始上傳第乙個塊,預設0 128m,n...

hdfs讀寫流程 HDFS 讀寫流程(詳解)

hdfs hadoop distributed file system 是gfs的開源實現。1 優點 因為有多個副本,可以保證資料可靠,容錯性高 計算向資料移動,適用於批處理 適合大資料處理,gb tb pb級資料,百萬以上的檔案,十萬以上的節點 可以構建在廉價機器上,通過多副本提高可靠性 2 缺點...

hdfs讀寫流程 HDFS 檔案讀寫流程

開啟分布式檔案 呼叫分布式檔案 distributedfilesystem.open 方法 定址請求 從 namenode 處得到 datanode 的位址,distributedfilesystem使用 rpc 方式呼叫了namenode,namenode 返回存有該副本的datanode 位址,...