1. 程式人生 > >Hadoop之客戶端讀取HDFS中的資料

Hadoop之客戶端讀取HDFS中的資料

客戶端通過呼叫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日凌晨

這裡寫圖片描述