博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop 提高hdfs删文件效率----hadoop删除文件流程解析
阅读量:4112 次
发布时间:2019-05-25

本文共 629 字,大约阅读时间需要 2 分钟。

前言

这段时间在用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

参考 

你可能感兴趣的文章
阿里面试总结--JAVA
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
【设计模式】—-(2)工厂方法模式(创建型)
查看>>
有return的情况下try catch finally的执行顺序(最有说服力的总结)
查看>>
String s1 = new String("abc"); String s2 = ("abc");
查看>>
JAVA数据类型
查看>>
Xshell 4 入门
查看>>
SoapUI-入门
查看>>
Oracle -常用命令
查看>>
JAVA技术简称
查看>>
ORACLE模糊查询优化浅谈
查看>>
2016——个人年度总结
查看>>
2017——新的开始,加油!
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.1、类和实例
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>