Hadoop之客戶端讀取HDFS中的資料
阿新 • • 發佈:2019-02-16
客戶端通過呼叫FileSystem物件的open()方法來開啟希望讀取的檔案 DistributedFileSystem使用RPC呼叫namenode,確定檔案起始塊位置。對於檔案的每個塊,namenode返回該塊副本的datanode的地址,這些datanode根據與客戶端的距離排序,如果客戶端本身就是一個datanode,並且儲存有副本時,則從本地datanode中讀取資料。 客戶端使用DistributedFileSystem返回的FSDataInputStream流物件讀取資料,客戶端呼叫read方法,將資料從datanode傳輸到客戶端,完成後尋找下一個塊的最佳datanode。 一旦客戶端完成讀取,FSDataInputStream呼叫close方法。 注:如果流於datanode通訊出現錯誤,他會嘗試從這個塊的另一個最近的datanode讀取資料。
重點:資料流分散在叢集中所有datanode,namenode告知客戶端每個塊最佳datanode。由客戶端直接從該datanode讀取資料。所以這種設計能夠HDFS可擴充套件到大量併發客戶端
2015年10月27日凌晨