hdfs dfs -put ruozedata.log /user/hadoop/day01/ (把本地檔案ruozedata.log複製上傳到hdfs下的/user/hadoop/day01/ 的資料夾下面)
client調filesystem.create(path),與nn rpc通訊,check path是否已經存在及有沒有許可權建立;(rpc通訊!不要搞混)假如ok,就建立乙個新檔案,但是不關聯任何的block,返回乙個fsdataoutputstream物件;假如不ok,就返回錯誤資訊
client呼叫fsdataoutputstream物件的write方法,將第乙個塊寫給dn1,當第乙個塊寫完,dn1複製塊到dn2,當第二個塊寫完,dn2複製塊到dn3,當第三個塊寫完,dn3返回乙個ack packet確認包給dn2,當dn2收到dn3的ack,傳送乙個ack給dn1,當dn1收到dn2的ack,傳送乙個ack給fsdataoutputstream物件,標識第乙個塊3個副本全部寫完;然後餘下的塊依次這麼寫!
當檔案寫完成,client呼叫fsdataoutputstream物件的close方法,關閉輸出流,flush快取區的資料報;
再呼叫filesystem.complete方法,告訴nn,我們寫完了。
HDFS寫檔案流程
hdfs寫入檔案流程圖如下 1 客戶端呼叫distributed filesystem.create path 方法,與namenode進行rpc通訊,引數為路徑path。檢查傳入的路徑是否存在,以及當前使用者是否有寫入許可權。假如都滿足,就建立乙個新的檔案,但是此時並不關聯任何的block。並且返...
HDFS 寫檔案流程
hdfs寫檔案流程,需要先看懂下面2張圖 如圖 有2個機架伺服器群,通過交換機進行互動,其中同乙個群的不同機架都通過群內的伺服器進行互動。例子中設定的3個副本放置在2個機架服務群上,其中副本1,2絕對不在同乙個機架群。這是為了防止有人把副本設定為2,然後a1,a2都分配到乙個機架服務群。假設乙個資料...
HDFS讀取流程和寫流程
讀 1.客戶端或者使用者通過呼叫 filesystem 物件的 open 方法開啟需要讀取的檔案,這對 hdfs 來說是常見乙個分布式檔案系統的乙個讀取例項。2.filesystem 通過遠端協議呼叫 namenode 確定檔案的前幾個 block 的位置。對於每乙個 block,namenode ...