在生产环境中,HDFS历史遗留的海量小文件问题是一个经典的“慢性毒药”。它会极大地消耗 NameNode 的内存(每个文件/块约占用 150 字节内存),拖慢 RPC 响应,并导致计算引擎(Spark/MapReduce)在调度任务时产生巨大的开销。 解决这个问题需要一套“先盘点、后分类、稳步治理、预防为主”的组合拳。以下是生产环境下的标准化解决路径: --- 第一步:盘点与分析(找出小文件重灾区) 在生产环境中,绝对不能直接使用 去遍历海量目录,这会直接把 NameNode 的 RPC 打满,导致线上故障。 1. 使用 FSImage 离线分析(推荐): 从 NameNode 下载最新的 文件。 使用 Hadoop 自带的离线图像查看器(OIV): 将 CSV 导入 Hive 或 ClickHouse 中进行 SQL 分析,找出文件平均大小极小、文件数量极多的 Top 100 目录(通常集中在某些历史 Hive 表的分区或临时目录)。 2. 清理无用数据: 发现很多小文件其实是临时目录(如 , )或早已废弃的测试表,直接评估后安全删除。 --- 第二步:存量治理(针对历史遗留文...