1. 程式人生 > >HDFS的讀寫過程簡述

HDFS的讀寫過程簡述

主要的角色:

客戶端:負責發起或提交讀寫請求(如果往HDFS上儲存資料或獲取資料,就要告訴客戶端)。

namenode:HDFS的核心負責全域性協調,做任何事都要向這裡彙報,和把控所有的請求。

datanode:數量不定,負責資料的 儲存。

把資料寫到HDFS的叢集的過程

1.使用者向客戶端請求服務

                        

請求角色:1.hdfs shell2.JAVA API                         1.要將資料分為128M的塊2.以三副本的方式儲存


作為客戶端預設:1.大的檔案要拆分為128M或64M

2.檔案以多副本的方式儲存(最少為3)

2.客戶端拿到資料

                            

             客戶端拆分為2塊                                         客戶端請求namenode(1個128的塊和3個副本)

                             

namenode工作:                                                      namenode想客戶端返回資訊:

1.三個副本需要是三個datanode                                  1.含有三個datanod,並按距離排序

2.考慮資源排程


客戶端向datanode寫資料,datanode1將相同的資料寫到datanode2,datanode2完成統一的動作給datanode3


寫資料的方式以流水線的方式完成(通俗講就是資料進來一點寫一點,直到寫完)

                              

資料寫完後告訴namenode                                       1. namenode和客戶端知道第一個塊以寫完

                                                                                 2.客戶端以相同的步驟完成剩下的塊

                                  

完成所有寫入資料後關閉資料流                                        總結:客戶端:拆分檔案

                                                                                                 namenode:提供塊在datanode中的地址

                                                                                                 datanode:儲存資料,並以流水線的方式將資料寫完

從HDFS中讀取資料

                                        

使用者想客戶端發起讀取資料的請求                                            客戶端向namenode發起請求:告訴它檔名

                                      

namenode通過計算告訴客戶端源資料資訊                                     客戶端知道資訊,向塊發起請求

(塊在datanode中的位置,副本多少,幾個塊)


客戶端向datanode發起請求,

datanode將資料返回客戶端

HDFS的優點:

資料冗餘(多副本方式儲存)

處理流式的資料訪問(一次寫入,多次讀取的操作)

適合儲存大檔案的方式

可構建在廉價的機器上面

HDFS的缺點:

低延遲的資料訪問

不適合小檔案的儲存(重):不管是1M還是127M,都要儲存128M,然後產生源資料,若小檔案很多,則給namenode帶來很多壓力