HDFS讀寫數據流程


1. HDFS讀數據流程

  1、與NameNode通信查詢元數據,找到文件塊所在的DataNode服務器

  2、挑選一台DataNode(網絡拓撲上的就近原則,如果都一樣,則隨機挑選一台DataNode)服務器,請求建立socket流

  3、DataNode開始發送數據(從磁盤里面讀取數據放入流,以packet(一個packet為64kb)為單位來做校驗)

  4、客戶端以packet為單位接收,先在本地緩存,然后寫入目標文件

流程如下:
  

 

2. HDFS寫數據流程

  1、跟NameNode通信請求上傳文件,NameNode檢查目標文件是否已經存在,父目錄是否已經存在

  2、NameNode返回是否可以上傳

  3、Client先對文件進行切分,請求第一個block該傳輸到哪些DataNode服務器上

  4、NameNode返回3個DataNode服務器DataNode 1,DataNode 2,DataNode 3

  5、Client請求3台中的一台DataNode 1(網絡拓撲上的就近原則,如果都一樣,則隨機挑選一台DataNode)上傳數據(本質上是一個RPC調用,建立pipeline),DataNode 1收到請求會繼續調用DataNode 2,然后DataNode 2調用DataNode 3,將整個pipeline建立完成,然后逐級返回客戶端

  6、Client開始往DataNode 1上傳第一個block(先從磁盤讀取數據放到一個本地內存緩存),以pocket為單位。寫入的時候DataNode會進行數據校驗,它並不是通過一個packet進行一次校驗而是以chunk為單位進行校驗(512byte)。DataNode 1收到一個packet就會傳給DataNode 2,DataNode 2傳給DataNode 3,DataNode 1每傳一個pocket會放入一個應答隊列等待應答

  7、當一個block傳輸完成之后,Client再次請求NameNode上傳第二個block的服務器.

流程如下:

  

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM