du 命令是 "disk usage"(磁盘使用情况)的缩写,在 Hadoop 生态系统中,它是一个非常基础且重要的命令,用于查看 HDFS 文件或目录所占用的空间大小。

hadoop fs -du 命令用于显示 HDFS 上文件或目录的大小及其下所有文件的总大小,它可以帮助你了解集群中数据的存储分布情况,是排查磁盘空间问题和进行数据管理的重要工具。
基本语法:
hadoop fs -du [-s] [-h] [-v] <paths>
核心选项
下面是 du 命令最常用和最重要的几个选项:
| 选项 | 全称 | 描述 | 示例 |
|---|---|---|---|
-s |
--summarize |
汇总显示,只计算每个指定路径的总大小,而不显示其下子目录的详细信息。 | hadoop fs - -s /data |
-h |
--human-readable |
人性化显示,将字节大小转换为更易读的单位(如 KB, MB, GB, TB)。强烈推荐使用此选项。 | hadoop fs -du -h /data |
-v |
--verbose |
显示详细信息,除了文件大小外,还会显示文件的路径、副本数、块大小等信息。 | hadoop fs -du -v /data |
-x |
--exclude |
排除匹配指定模式的文件或目录。 | hadoop fs -du -x "*.log" /data |
注意: 如果你使用的是 Hadoop 3.x 版本,命令可能直接是 hadoop du,而不是 hadoop fs -du,但其功能和选项基本一致。

常用示例
假设我们的 HDFS /user/hadoop 目录结构如下:
/user/hadoop/
├── file1.txt (100 bytes)
├── dir1/
│ ├── file2.txt (500 bytes)
│ └── file3.txt (200 bytes)
└── dir2/
└── file4.txt (1500 bytes)
示例 1:基本用法(不使用任何选项)
直接查看 /user/hadoop 目录,会递归显示其下所有文件的大小。
hadoop fs -du /user/hadoop
输出:
100 /user/hadoop/file1.txt
500 /user/hadoop/dir1/file2.txt
200 /user/hadoop/dir1/file3.txt
1500 /user/hadoop/dir2/file4.txt
- 第一列:文件的大小(以字节为单位)。
- 第二列:文件的大小乘以它的副本数,默认副本数是 3,
file1.txt的大小是100 * 3 = 300,但这里显示的是原始大小。注意:在较新版本的 Hadoop 中,第二列的含义有所变化,通常直接显示文件原始大小,而不是副本大小,最准确的理解是:第一列是文件大小,第二列是占用的磁盘空间(考虑副本和块大小)。 - 第三列:文件的完整 HDFS 路径。
示例 2:使用 -s 选项进行汇总
如果我们只想知道 /user/hadoop 目录的总大小,而不关心内部结构。

hadoop fs -du -s /user/hadoop
输出:
2300 /user/hadoop
- 这表示
/user/hadoop目录及其所有子文件总共占用了 2300 字节的空间(原始数据大小)。
示例 3:结合 -s 和 -h 选项(最常用)
这是最实用的用法,既能汇总大小,又能以人性化的方式显示。
hadoop fs -du -sh /user/hadoop
输出:
3K /user/hadoop
3K表示 2.3 KB,比2300直观得多。
示例 4:查看多个目录
可以一次性查看多个不同目录的大小。
hadoop fs -du -sh /user/hadoop/dir1 /user/hadoop/dir2
输出:
700 /user/hadoop/dir1
1.5K /user/hadoop/dir2
示例 5:查看整个用户目录
查看 /user 目录下所有用户目录的总大小。
hadoop fs -du -sh /user/*
输出:
0K /user/hadoop
1.2M /user/hive
50M /user/spark
- 是一个通配符,代表
/user下的所有直接子项。
示例 6:使用 -v 选项查看详细信息
这个选项可以提供更丰富的元数据信息。
hadoop fs -du -v /user/hadoop/file1.txt
输出(示例):
File Size: 100
Replication: 3
Block Size: 128MB
Storage Policy: HOT
Path: /user/hadoop/file1.txt
Disk Space: 300 (considering replication)
- 输出会明确告诉你文件大小、副本数、块大小等信息,非常有助于深入分析。
与 Linux du 命令的对比
| 特性 | Hadoop fs -du |
Linux du |
|---|---|---|
| 作用范围 | Hadoop 分布式文件系统 | 本地文件系统 |
| 大小计算 | 默认显示文件原始大小,第二列可能与副本和块大小有关 | 默认显示文件占用的磁盘空间(考虑块分配) |
| 核心选项 | -s (汇总), -h (人性化), -v (详细) |
-s (汇总), -h (人性化), -a (显示所有文件), --max-depth (控制递归深度) |
| 性能 | 在集群上执行,可能需要跨节点汇总数据,速度相对较慢 | 在本地执行,速度非常快 |
hadoop fs -du是检查 HDFS 磁盘使用情况的核心命令。-sh是最常用的组合,用于快速、人性化地查看目录总大小。- 它的输出可以帮助你:
- 识别大文件/大目录:找出占用空间最多的数据,为数据清理或归档提供依据。
- 监控数据增长:定期查看目录大小,了解数据增长趋势。
- 排查空间问题:当 HDFS 空间不足时,用
du命令定位是哪些目录或用户占用了过多空间。 - 数据管理:了解数据分布,辅助进行数据分区、分桶等优化操作。
熟练掌握 hadoop fs -du 命令,对于任何 Hadoop 开发者、管理员或数据分析师来说都是必备技能。
