hdfs讀取流程


hdfs讀取流程


獲取file文件,假設文件200M,則共有2個塊,block1為128M(hdfs默認塊大小為128M),block2為72M。默認三個副本。

  1. ClientNode調用DistributedFileSystem的 open 方法獲取FSDataInputStream。
  2. DistributedFileSystem向NameNode發出請求獲取file文件的元數據,包括所有塊所在的DataNode的位置信息。
  3. ClientNode調用FSDataInputStream獲取數據流。
  4. FSDataInputStream調用就近DanaNode獲取block1。DanaNode開始傳輸數據給客戶端,從磁盤裡面讀取數據輸入流,以Packet為單位來做校驗。ClientNode以Packet為單位接收數據,先在本地緩存,然後寫入目標文件。文件仍存在未讀取的block2,則繼續執行4。直到文件所有數據讀取完成。
  5. 全部數據接收完成,關閉數據流FSDataInputStream。


分享到:


相關文章: