HDFS讀寫原理

hadoop三個核心內容是HDFS、mapreduce以及HBase。此文簡單描述HDFS的讀寫原理


讀原理

3880695504009999239.png

  1. HDFS客戶端調用Distributed FileSystem中的open()

  2. 通過RPC協議調用NameNode來確定請求文件塊所在的位置

  3. Distributed FileSystem(以下簡稱DFS)向客戶端返回一個支持文件定位的輸入流對象FSDataInputStream(以下簡稱FSDIS)用於給客戶端讀取數據的。FSDIS包含一個DFSInputStream對象,是用於管理NN和DN之間的I/O

  4. 客戶端在FSDIS上調用read()函數

  5. 以近到遠讀取DataNode上的數據,這期間會一直不斷的調用read(),直到讀取數據結束

  6. 在FSDIS中調用close()關閉


寫原理

675539944205662234.png

  1. HDFS客戶端在DFS中調用了create()函數創建了一個文件

  2. NN對請求進行驗證(驗證內容爲兩部分:一是文件是否存在。二是請求客戶端是否有寫權限)。NN創建文件成功時,DFS會返回FSDataOutputStream(以下簡稱FSDOS)給客戶端,讓客戶端用來寫入數據。FSDOS中也包含了一個DFSOS

  3. 客戶端寫入數據時,DFSOS會將文件分割成包。然後放入一個內部隊列,稱其爲數據隊列。DN會形成一“管道”,DataStream會將這些小的文件包放入數據流中,DataStream的作用是請求NN爲數據文件包分配合適的DN存放副本

  4. DataStream會逐一傳送給DN,讓DN存儲

  5. DFSOS同時也會保存數據到一個內部隊列,用來等待DN返回確認信息,這個隊列被稱爲確認隊列

  6. 最後在FSDOS中調用close()

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