簡單搞定hdfs讀寫流程

2021-08-07 18:17:22 字數 1497 閱讀 9420

1.hdfs寫資料流程

1)客戶端向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。

2)namenode返回是否可以上傳。

3)客戶端請求第乙個 block上傳到哪幾個datanode伺服器上。

4)namenode返回3個datanode節點,分別為dn1、dn2、dn3。

5)客戶端請求dn1上傳資料,dn1收到請求會繼續呼叫dn2,然後dn2呼叫dn3,將這個通訊管道建立完成

6)dn1、dn2、dn3逐級應答客戶端

7)客戶端開始往dn1上傳第乙個block(先從磁碟讀取資料放到乙個本地記憶體快取),以packet為單位,dn1收到乙個packet就會傳給dn2,dn2傳給dn3;dn1每傳乙個packet會放入乙個應答佇列等待應答

8)當乙個block傳輸完成之後,客戶端再次請求namenode上傳第二個block的伺服器。(重複執行3-7步)

4.1.2 網路拓撲概念

在本地網路中,兩個節點被稱為「彼此近鄰」是什麼意思?在海量資料處理中,其主要限制因素是節點之間資料的傳輸速率——頻寬很稀缺。這裡的想法是將兩個節點間的頻寬作為距離的衡量標準。

節點距離:兩個節點到達最近的共同祖先的距離總和。

例如,假設有資料中心d1機架r1中的節點n1。該節點可以表示為/d1/r1/n1。利用這種標記,這裡給出四種距離描述。

distance(/d1/r1/n1, /d1/r1/n1)=0(同一節點上的程序)

distance(/d1/r1/n1, /d1/r1/n2)=2(同一機架上的不同節點)

distance(/d1/r1/n1, /d1/r3/n2)=4(同一資料中心不同機架上的節點)

distance(/d1/r1/n1, /d2/r4/n2)=6(不同資料中心的節點)

第乙個副本在

client

所處的節點上。如果客戶端在集群外,隨機選乙個。

第二個副本和第乙個副本位於相同機架,隨機節點。

第三個副本位於不同機架,隨機節點。

4.寫入資料時,如果希望資料被其他

client

立即可見,呼叫如下方法

fsdataoutputstream.hflus();//

清理客戶端緩衝區資料,被其他

client

立即可見

fsdataoutputstream.hsync();//

清理客戶端緩衝區資料,被其他

client

不能立即可見

hdfs讀寫流程 HDFS 讀寫流程(詳解)

hdfs hadoop distributed file system 是gfs的開源實現。1 優點 因為有多個副本,可以保證資料可靠,容錯性高 計算向資料移動,適用於批處理 適合大資料處理,gb tb pb級資料,百萬以上的檔案,十萬以上的節點 可以構建在廉價機器上,通過多副本提高可靠性 2 缺點...

hdfs讀寫流程 HDFS 檔案讀寫流程

開啟分布式檔案 呼叫分布式檔案 distributedfilesystem.open 方法 定址請求 從 namenode 處得到 datanode 的位址,distributedfilesystem使用 rpc 方式呼叫了namenode,namenode 返回存有該副本的datanode 位址,...

hdfs讀寫流程

1.client發起檔案上傳請求 通過rpc和namenode建立連線,namenode檢查目標檔案是否存在,檢查父目錄是否存在,檢查使用者是否有許可權,返回是否可以上傳 2.client請求第乙個block該傳輸到那些datanode伺服器上 3.namenode根據配置檔案中指定的備份數量及機架...