Hadoop寫入讀取流程

寫入流程

  1. 客戶端經過Distributed FileSystem模塊向namenode請求上傳文件,namenode檢查目標文件是否已存在,父目錄是否存在。
  2. namenode返回是否能夠上傳。
  3. 客戶端請求第一個 block上傳到哪幾個datanode服務器上。
  4. namenode返回3個datanode節點,分別爲dn一、dn二、dn3。
  5. 客戶端經過FSDataOutputStream模塊請求dn1上傳數據,dn1收到請求會繼續調用dn2,而後dn2調用dn3,將這個通訊管道創建完成。
  6. dn一、dn二、dn3逐級應答客戶端。
  7. 客戶端開始往dn1上傳第一個block(先從磁盤讀取數據放到一個本地內存緩存,而後纔會寫入本地磁盤),以packet爲單位,dn1收到一個packet就會傳給dn2,dn2傳給dn3;dn1每傳一個packet會放入一個應答隊列等待應答。
  8. 當一個block傳輸完成以後,客戶端再次請求namenode上傳第二個block的服務器。(重複執行3-7步)。

讀取流程

HDFS讀取流程

  1. 客戶端經過Distributed FileSystem向namenode請求下載文件,namenode經過查詢元數據,找到文件塊所在的datanode地址。
  2. 挑選一臺datanode(就近原則,而後隨機)服務器,請求讀取數據。
  3. datanode開始傳輸數據給客戶端(從磁盤裏面讀取數據輸入流,以packet爲單位來作校驗)。
  4. 客戶端以packet爲單位接收,先在本地緩存,而後寫入目標文件。
相關文章
相關標籤/搜索