hadoop 提升hdfs刪文件效率----hadoop刪除文件流程解析

前言java

這段時間在用hdfs,因爲要處理的文件比較多,要及時產出舊文件,可是發現hdfs的blocks數一直在上漲,經分析是hdfs寫入的速度較快,而block回收較慢,因此分心了一下hadoop刪文件的流程,並作了調優,但願對遇到此類問題的程序猿們有幫助。ios

正文函數

  經分析與查看源碼發現,hdfs刪除文件的流程是這樣的:oop

(1)java程序中的DFSClient調用delete函數,刪除文件spa

      (2)NameNode將文件從他的namespace中刪除.net

(3)NameNode經過心跳的方式,發命令給DataNode,告訴DataNode哪些block塊該刪除,而後DataNode才真正將文件刪除。xml

固然這裏面還有不少詳細的流程,這裏暫時不解釋了,經過查看源碼發現,NameNode每次經過心跳發給DataNode的block塊數是100, 如今調優有連個地方能夠改blog

(1)把心跳間隔改小一點,這個在配置文件hdfs-site.xml中的dfs.heartbeat.interval 。hadoop

(2)讓NameNode每次多發給DataNode一些block塊,因爲是看源碼發現的因此就該源碼了,後來發現其實能夠在配置文件中陪吐舌頭get

修改DFSConfigKeys類中的DFS_BLOCK_INVALIDATE_LIMIT_DEFAULT,從新編譯hadoop,替換到集羣中便可。

更簡單的方法就是修改配置文件  dfs.block.invalidate.limit



參考 http://blog.csdn.net/baggioss/article/details/5674359

相關文章
相關標籤/搜索