1. 程式人生 > >HDFS讀寫檔案的具體流程

HDFS讀寫檔案的具體流程

HDFS讀寫檔案的具體流程

1.圖解寫檔案

在這裡插入圖片描述

2.流程詳解

1.客戶端通過Distributed FileSystem(分散式檔案系統)模組向NameNode請求上傳檔案,NameNode檢查檔案是否已經存在,父目錄是否存在
2.NameNode檢查完成後,返回是否可以上傳結果給客戶端
3.客戶端向NameNode請求上傳第一個Block(0~128M)
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會放入一個應答佇列等待應答。(用的是非阻塞式NIO)
8.當一個Block傳輸完成之後,客戶端再次請求NameNode上傳第二個Block的伺服器。(重複執行3-7步)。

3.圖解讀檔案

在這裡插入圖片描述

4.流程詳解

1.客戶端通過Distributed FileSystem向NameNode請求下載檔案,NameNode通過查詢元資料,找到檔案塊所在的DataNode地址
2.挑選一臺DataNode(就近原則,然後隨機)伺服器,請求讀取資料
3.DataNode開始傳輸資料給客戶端(從磁盤裡面讀取資料輸入流,以Packet為單位來做校驗)
4.客戶端以Packet為單位接收,先在本地快取,然後寫入目標檔案

涉及到的思想:https://blog.csdn.net/qq_39657909/article/details/85056260
版權宣告:本部落格為記錄本人自學感悟,轉載需註明出處!


https://me.csdn.net/qq_39657909