hadoop文件写入
轉:http://blog.csdn.net/xiaoshunzi111/article/details/48198105
?
由上圖可知;寫入文件分為三個角色,分別是clientnode? namenode? 和datanode
cliennode本質為java虛擬機.namenode 和datanode則是Hadoop數據集群存儲塊
第一步:create實際是客戶端創建DistributedFileSystem實例化對象
第二步 create通過實例化對象錄取調用對象中create()方法,此方法訪問namenode,namenode收到命令,首先判斷datanode中所寫的文件是否有重復,然后在檢查namenode是否有可寫入空余的空間.當二者同時滿足是,namenode寫將datanode路徑信息,文件數等記錄,并確認信息返回DistributedFileSystem,否則返回異常,DistributedFileSystem收到確認信息后向客戶端返回一個FSDataOutputStream FSDataOutputStream對象
第三步:實例化FSDataOutputStream對象(該對象負責處理 datanode 和 namenode 之間的通信 ),調用該對象的write()方法,? 即是圖中write實現過程該對象負責處理 datanode 和 namenode 之間的通信
第四步:方法將數據分成多個數據包,并寫入內部隊列. DFDataOutStream 將寫入的數據分成多個數據包,并寫入內部隊列中,同時開啟datanode中DataStreamer處理數據隊列,它負責根據datanode列來要求namenode分配合適的新塊存儲數據備份開啟管道機制依次執行步驟4,同時即是write packet完整過程
第五步:每執行一次4就有一次步驟5返回確認信息.
4和5屬于分別在DataQueue隊列和ACKQueue隊列,當每執行一次4就將此步確認信息放到ACKQueue隊列中
?
如圖:
?
第六步:當FSDataOutputStream收到確認信息后,執行close()方法關閉輸出流,
第七步:DistributeFileStream 返回給namenode確認信息.
注釋:第4-5部分實現在后臺完成步不一定在第七步之前,
當執行第四步就就收第5步確認信息,告訴namenode 數據寫入成功,即是第七步.
轉載于:https://www.cnblogs.com/guxiaobei/p/8442131.html
總結
以上是生活随笔為你收集整理的hadoop文件写入的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaScript 函数定义
- 下一篇: 北京君正集成电路的Newton平台--穿