HDFS讀寫流程


讀程圖:

 

1、客戶端發送請求,調用DistributedFileSystem API的open方法發送請求到Namenode,獲得block的位置信息,因為真正的block是存在Datanode節點上的,而namenode里存放了block位置信息的元數據。

2、Namenode返回所有block的位置信息,並將這些信息返回給客戶端。

3、客戶端拿到block的位置信息后調用FSDataInputStream API的read方法並行的讀取block信息,圖中4和5流程是並發的,block默認有3個副本,所以每一個block只需要從一個副本讀取就可以。

4、datanode返回給客戶端。

 

寫流程:

1、客戶端發送請求,調用DistributedFileSystem API的create方法去請求namenode,並告訴namenode上傳文件的文件名、文件大小、文件擁有者。

2、namenode根據以上信息算出文件需要切成多少塊block,以及block要存放在哪個datanode上,並將這些信息返回給客戶端。

3、客戶端調用FSDataInputStream API的write方法首先將其中一個block寫在datanode上,每一個block默認都有3個副本,並不是由客戶端分別往3個datanode上寫3份,而是由

     已經上傳了block的datanode產生新的線程,由這個namenode按照放置副本規則往其它datanode寫副本,這樣的優勢就是快。

4、寫完后返回給客戶端一個信息,然后客戶端在將信息反饋給namenode。

5、需要注意的是上傳文件的擁有者就是客戶端上傳文件的用戶名,舉個例子用windows客戶端上傳文件,那么這個文件的擁有者就是administrator,和linux上的系統用戶名不是一樣的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM