[hadoop] HDFS的讀寫詳細流程

HDFS的寫入過程

1)客戶端向namenode請求上傳文件,namenode檢查目標文件是否已存在,父目錄是否存在。

2)namenode返回是否可以上傳。如果可以上傳,客戶端給上傳文件做邏輯分塊。

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

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

5)客戶端請求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步)

在這裏插入圖片描述

HDFS的讀取過程

1)客戶端向namenode請求下載文件,namenode通過查詢元數據,找到文件塊所在的datanode地址。

2)挑選一臺datanode(就近原則,然後隨機)服務器,請求讀取數據。

3)datanode開始傳輸數據給客戶端(從磁盤裏面讀取數據放入流,以packet爲單位來做校驗)。

4)客戶端以packet爲單位接收,先在本地緩存,然後寫入目標文件。

5)當一個block傳輸完成之後,客戶端再次請求namenode下載第二個block的服務器。(重複執行2-4步)
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章