HDFS讀寫流程

爲了更好地理解HDFS讀寫流程,下面主要以漫畫的形式進行的敘述。
一、HDFS寫的流程
1、HDFS主要組成(主要了解hadfs構成及其擔任的工作)
在這裏插入圖片描述
client:客戶端(主要發起讀和寫),可以在javaapi操作,也可以hdfs shell中操作
namenode:全局把控
datanode:存儲數據
2、數據分塊
默認的情況下,客戶端知道一個blocksize是多大和有幾個block的副本。
在這裏插入圖片描述
客戶端根據默認blocksize的大小將上傳的數據進行分塊,分好之後去找全局的把控者(namenode),告訴它我要進行以什麼樣的方式進行數據存儲。
3、數據存儲
datenode進行數據存儲
在這裏插入圖片描述
根據客戶端的請求,namenode找好存儲數據的datenode,告訴客戶端你往那幾個datenode存儲。接下來客戶端就進行數據存儲,存儲的時候client先將數據存到第一個datenode,然後這個datenode將數據存儲到下一個datenode,第二個datenode將數據存儲到第三個datenode上。也就是說client只負責存儲第一個,之後的那幾個存儲都是有對應的datenode完成的。存儲完成後,三個datenode要給namenode返回一個信息,告訴它我們已經完成了數據的存儲。
4、釋放連接
數據存儲完成,客戶端和namenode之間的鏈接就斷開。
在這裏插入圖片描述
雖然斷開鏈接,但是namenode必須知道這些數據(block)存放在那些節點上。
二、HDFS進行數據讀的流程
hdfs讀取數據
在這裏插入圖片描述
(1)操作者告訴客戶端,自己查看什麼數據,也就是數據的文件名是什麼。
(2)客戶端將文件名傳到namedate
(3)namenode根據數據名,告訴客戶端所需要的元數據(每個block存放在哪裏,大小等等)
(4)客戶端根據namenode返回來的信息,與datenode進行數據的下載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章