HDFS中的讀寫數據流

1.文件的讀取: 函數

    首先、客戶端銅鼓調用FileSystem對象中的open()函數讀取它須要的數據。FileSystemHDFSDistributeFileSystem的一個實例。DistributeFileSystem會經過RPC協議調用NameNode來肯定請求文件所在的位置,對於每一個返回的塊都包換塊所在的DataNode地址,隨後這些返回的DataNode會按照Hadoop定義的集羣拓撲結構得出客戶端的距離。而後再進行排序,若是客戶端自己就是一個DataNode那麼它將從本地讀取文件。這裏要關注的一個設計要點是,客戶端經過NameNode引導獲取最合適的DataNode地址,而後直接鏈接DataNode讀取數據。這種設計的好處,這能夠使HDFS擴展到更大規模的客戶端並行處理。這是由於數據的流動全部的DataNode之間分散進行的,同時NameNode的壓力也變小。 oop

2.文件寫入 spa

①客戶端經過調用DistributeFileSystem對象中的Create()建立一個文件,經過RPC()調用在NameNode的文件系統命名空間中建立一個新文件。 設計

NaneNode會經過多種驗證保證新的文件不存在文件系統中,而且確保請求客戶端有建立按文件的權限。若是成功distributeFileSystem返回一個FSDataOutputStream給客戶端寫人數據 對象

③當客戶端寫入數據時,DFSoutputStream會將文件分割成包,而後放入內部隊列,DataStreamer,做用是請求NameNode爲新的文件包分配合適的DataNode存放副本。 排序

DFSoutputStream同時也會保存在一個包的內部隊列,用來等待管道中的DataNode返回確認信息。 隊列

hadoop實戰第二版》機械工業出版社….. 陸嘉恆著;
相關文章
相關標籤/搜索