hadoop之hdfs詳解之二:寫流程

客戶端通過rpc與NN通信
寫文件命令:bin/hdfs dfs - put xxx.log /usr/hadoop/data/

1、Client調用(Distributed FileSystem)filesystem.creat(傳的是文件的filepath),與NN節點進行rpc通信,NN check Path檢查該路徑下的文件是否已經存在及有沒有權限創建;

-假如ok,就創建一個新文件,但是不關聯任何的block,返回一個FSDataOutputStream對象;

-假如不ok,就返回錯誤信息。

2、Client調用FSDataOutputStream對象的write方法
將第一個塊寫給DataNode(DN1),當第一個塊寫完,DN1複製塊到DN2,
當第二個塊寫完,DN2複製塊到DN3,
當第三個塊寫完,DN3返回一個ack packet確認包給DN2,
當DN2收到DN3的ack,發送一個ack packet給DN1,
當DN1收到DN2的ack,發送一個ack packet 給FSDataOutputStream對象,標識第一個塊3個副本全部寫完;
然後餘下的塊依次這麼寫!

3、刷新緩存數據包:
當文件寫完成,Client調用FSDataOutputStream對象的close方法,關閉輸出流,flush緩存區的數據包

4、再調用filesystem.complete方法,告訴NN文件寫入成功。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章