一、使用HDFS提供的客戶端Client,向遠程的Namenode發起RPC請求;node
二、Namenode會視狀況返回文件的部分或者所有block列表,對於每一個block,Namenode都會返回有該block拷貝的DataNode地址;ide
三、客戶端Client會選取離客戶端最近的DataNode來讀取block;若是客戶端自己就是DataNode,那麼將從本地直接獲取數據;spa
四、讀取完當前block的數據後,關閉當前的DataNode連接,併爲讀取下一個block尋找最佳的DataNode;orm
五、當讀完列表block後,且文件讀取尚未結束,客戶端會繼續向Namenode獲取下一批的block列表;blog
六、讀取完一個block都會進行checksum驗證,若是讀取datanode時出現錯誤,客戶端會通知Namenode,而後再從下一個擁有該block拷貝的datanode繼續讀。it
客戶端及讀取HDFS中的數據的流程圖class