1. 客戶端向namenode發起RPC調用,請求讀取文件數據。
2. namenode檢查文件是否存在,如果存在則獲取文件的元信息(blockid以及對應的datanode列表)。
3. 客戶端收到元信息后選取一個網絡距離最近的datanode,依次請求讀取每個數據塊。客戶端首先要校檢文件是否損壞,如果損壞,客戶端會選取另外的datanode請求。
4. datanode與客戶端建立socket連接,傳輸對應的數據塊,客戶端收到數據緩存到本地,之后寫入文件。
5. 依次傳輸剩下的數據塊,直到整個文件合并完成。