1、现象:
Hadoop3.1删除大量文件(程序删除、清理回收站)导致RPC高延迟
2、调研与监控分析
2.1、逻辑如下图
2.2监控分析
采用Alibaba arthas监控方法栈耗时
Arthas监控NameNode删除大量大文件方法栈耗时截图
3、结论
Hadoop新版本的FoldedTreeSet(存储block Info)的红黑树实现是有问题的,尤其在删除大量文件时,表现很糟糕
4、解决(优化)方案
将JIRA 中linyiqun先生提出的HDFS-13831的patch打入(对应github地址),将BLOCK_DELETION_INCREMENT = 1000 hardCode变成可配置的dfs.namenode.block.deletion.increment参数,然后将此参数(增量删除块的个数)减少,以达到减小FoldedTreeSet(存储BlockInfo)数据结构的压力,进而减少hold lock时间,优化RPC
【上述解决方案测试中…】