hadoop 提高hdfs删文件效率----hadoop删除文件流程解析

前言

这段时间在用hdfs,由于要处理的文件比较多,要及时产出旧文件,但是发现hdfs的blocks数一直在上涨,经分析是hdfs写入的速度较快,而block回收较慢,所以分心了一下hadoop删文件的流程,并做了调优,希望对遇到此类问题的程序猿们有帮助。

正文

  经分析与查看源码发现,hdfs删除文件的流程是这样的:

(1)java程序中的DFSClient调用delete函数,删除文件

      (2)NameNode将文件从他的namespace中删除

(3)NameNode通过心跳的方式,发命令给DataNode,告诉DataNode哪些block块该删除,然后DataNode才真正将文件删除。

当然这里面还有很多详细的流程,这里暂时不解释了,通过查看源码发现,NameNode每次通过心跳发给DataNode的block块数是100, 现在调优有连个地方可以改

(1)把心跳间隔改小一点,这个在配置文件hdfs-site.xml中的dfs.heartbeat.interval 。

(2)让NameNode每次多发给DataNode一些block块,由于是看源码发现的所以就该源码了,后来发现其实可以在配置文件中陪吐舌头

修改DFSConfigKeys类中的DFS_BLOCK_INVALIDATE_LIMIT_DEFAULT,重新编译hadoop,替换到集群中即可。

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



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




转载于:https://www.cnblogs.com/smileallen/p/3391473.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值