hdfs數據寫入:
第一步:客戶端通過dfs模塊向namenade請求:輸出目錄是否存在、父目錄是否存在
第二步:namenode通過檢查hdfs目錄,返回客戶端結果
第三步:客戶端向namenode請求:數據節點(3個)dn1,dn2,dn3
第四步:namenode將數據節點的具體位置返回給客戶端
第五步:客戶端請求dn1上傳數據,dn1收到請求后會繼續調用dn2,dn2收到請求后會繼續調用dn3.將通信管道建立,dn1,dn2,dn3逐級響應客戶端。
第六步:客戶端開始上傳第一個block,先將數據放到緩存,以pocket為單位(64K),dn1收到pocket后,會傳給dn2,dn2收到后會傳給dn3。
第七步:當第一個block上傳完之后,客戶端再次請求namenode,准備第二個block數據塊的上傳。
hdfs數據讀取:
第一步:客戶端通過dfs模塊向namenode請求下載文件,namenode通過元數據查找,返回dn的地址
第二步:挑選dn(就近原則>隨機原則),請求獲取數據
第三步:dn開始給客戶端發送數據,以pocket為單位
第四步:客戶端以pocket為單位接受數據,先本地緩存,后寫入到目標文件