我知道du -sh
常见的 Linux 文件系统。但是如何使用 HDFS 做到这一点?
11 回答
hadoop fs -du -s -h /path/to/dir
以可读的形式显示目录的大小。
扩展到Matt D和其他人的答案,该命令可以直到Apache Hadoop 3.0.0
hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]
它显示给定目录中包含的文件和目录的大小或文件的长度,以防它只是一个文件。
选项:
- -s选项将导致显示文件长度的汇总摘要,而不是单个文件。如果没有 -s 选项,则通过从给定路径深入 1 级来完成计算。
- -h选项将以人类可读的方式格式化文件大小(例如 64.0m 而不是 67108864)
- -v选项将列的名称显示为标题行。
- -x选项将从结果计算中排除快照。如果没有 -x 选项(默认),则始终从所有 INode 计算结果,包括给定路径下的所有快照。
du
返回具有以下格式的三列:
+-------------------------------------------------------------------+
| size | disk_space_consumed_with_all_replicas | full_path_name |
+-------------------------------------------------------------------+
示例命令:
hadoop fs -du /user/hadoop/dir1 \
/user/hadoop/file1 \
hdfs://nn.example.com/user/hadoop/dir1
退出代码:成功返回 0,错误返回 -1。
有了这个,您将获得以 GB 为单位的大小
hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
当试图计算目录中特定文件组的总数时,该-s
选项不起作用(在 Hadoop 2.7.1 中)。例如:
目录结构:
some_dir
├abc.txt
├count1.txt
├count2.txt
└def.txt
假设每个文件的大小为 1 KB。您可以总结整个目录:
hdfs dfs -du -s some_dir
4096 some_dir
但是,如果我想要包含“count”的所有文件的总和,则该命令不足。
hdfs dfs -du -s some_dir/count*
1024 some_dir/count1.txt
1024 some_dir/count2.txt
为了解决这个问题,我通常通过 awk 传递输出。
hdfs dfs -du some_dir/count* | awk '{ total+=$1 } END { print total }'
2048
要获取目录的大小hdfs dfs -du -s -h /$yourDirectoryName可以使用。hdfs dfsadmin -report 可用于查看快速集群级存储报告。
以人类可读格式获取文件夹大小的最简单方法是
hdfs dfs -du -h /folderpath
哪里-s
可以相加得到总和
Hadoop 集群上已用空间的百分比
sudo -u hdfs hadoop fs –df
特定文件夹下的容量:
sudo -u hdfs hadoop fs -du -h /user
hdfs dfs -count <dir>
来自手册页的信息:
-count [-q] [-h] [-v] [-t [<storage type>]] [-u] <path> ... :
Count the number of directories, files and bytes under the paths
that match the specified file pattern. The output columns are:
DIR_COUNT FILE_COUNT CONTENT_SIZE PATHNAME
or, with the -q option:
QUOTA REM_QUOTA SPACE_QUOTA REM_SPACE_QUOTA
DIR_COUNT FILE_COUNT CONTENT_SIZE PATHNAME
命令应该是hadoop fs -du -s -h \dirPath
-du [-s] [-h] ... :显示与指定文件模式匹配的文件使用的空间量(以字节为单位)。
-s:而不是显示与模式匹配的每个单独文件的大小,而是
显示总(摘要)大小。-h:以人类可读的方式而不是字节数来格式化文件的大小。(例如 MB/GB/TB 等)
请注意,即使没有 -s 选项,这也只会显示目录深处一级的大小摘要。
输出格式为大小名称(完整路径)