1. 程式人生 > >hdfs寫操作的流程

hdfs寫操作的流程

先來一張圖展示hdfs寫操作的流程 hdfs dfs put  ../test.log /data/

步驟:

1.client通過rpc協議呼叫filesystem.create(path)方法與namenode通訊,check path路徑在hdfs中是否存在,有沒有許可權,如果有就建立一個檔案,但是不關聯任何的block,返回一個FSDataOutputStream物件。如果沒有就返回錯誤。

2. client呼叫FSDataOutputStream物件的write方法,將第一個塊寫給DN1,當第一個塊寫完,DN1複製塊到DN2,DN2在複製到DN3中。

3.當DN3寫完後,返回一個ack package給DN2,DN2收到DN3的ack package後,返回ack package給DN1,當DN1收到ack後,返回ack給FSDataOutputStream物件,表示第一個塊的三個副本寫入完成。剩餘的塊依照上面的順序依次寫入hdfs中。

4.當檔案寫完後,client呼叫FSDataOutputStream物件的close方法,關閉輸出流,flush重新整理快取區的資料包。

5.再呼叫filesystem.complete方法,告訴nn我們寫完了。