1. 程式人生 > >hdfs讀流程

hdfs讀流程

先來一張圖展示hdfs讀流程  hsdf -dfs  -ls /

1.client端通過FileSystem.open(path)方法,和namenode通過rpc進行通訊,namenode校驗路徑是否存在,使用者是否有許可權

2.驗證完成後,返回檔案的部分或者全部的block列表(其實就是返回FSDataInputStream物件)

3.client呼叫FSDataInputStream物件的read方法,與第一個塊block所在的最近的datanode進行通訊,read塊內容,讀取完成後,會校驗,假如成功,會關閉與當前的datanode的通訊。

4.然後接著與第二個快block所在的最近的datanode進行通訊,read塊內容,讀取完成後,校驗成功,會關閉與datanode通訊。

5.因為FileSystem.open(path)返回的block列表是一批一批的,假如當前block列表讀完,檔案還沒有結束,就會繼續讀取下一批次的block列表。重複執行2、3步驟。

6.當檔案讀完之後,client會呼叫FSDataInputStream.close(),關閉輸入流。hdfs讀流程結束。