115

我知道du -sh常见的 Linux 文件系统。但是如何使用 HDFS 做到这一点?

4

11 回答 11

186

在 0.20.203 之前,并在 2.6.0 中正式弃用:

hadoop fs -dus [directory]

0.20.203 (dead link) 1.0.4开始,仍然兼容2.6.0

hdfs dfs -du [-s] [-h] URI [URI …]

您还可以运行hadoop fs -help以获取更多信息和细节。

于 2011-06-28T14:19:23.660 回答
80

hadoop fs -du -s -h /path/to/dir以可读的形式显示目录的大小。

于 2015-02-18T13:51:03.670 回答
39

扩展到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。

来源:阿帕奇文档

于 2017-09-11T17:31:33.657 回答
13

有了这个,您将获得以 GB 为单位的大小

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'
于 2016-06-24T11:43:55.237 回答
4

当试图计算目录中特定文件组的总数时,该-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 
于 2018-07-24T13:37:50.927 回答
2

要获取目录的大小hdfs dfs -du -s -h /$yourDirectoryName可以使用。hdfs dfsadmin -report 可用于查看快速集群级存储报告。

于 2016-11-13T06:05:28.960 回答
1

hadoop 2.3.33 版:

hadoop fs -dus  /path/to/dir  |   awk '{print $2/1024**3 " G"}' 

在此处输入图像描述

于 2018-09-02T08:27:53.633 回答
1

以人类可读格式获取文件夹大小的最简单方法是

hdfs dfs -du -h /folderpath

哪里-s可以相加得到总和

于 2021-03-18T17:30:12.403 回答
0

Hadoop 集群上已用空间的百分比
sudo -u hdfs hadoop fs –df

特定文件夹下的容量:
sudo -u hdfs hadoop fs -du -h /user

于 2014-10-27T12:55:54.667 回答
0

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
于 2019-08-21T20:36:52.147 回答
-1

命令应该是hadoop fs -du -s -h \dirPath

  • -du [-s] [-h] ... :显示与指定文件模式匹配的文件使用的空间量(以字节为单位)。

  • -s:而不是显示与模式匹配的每个单独文件的大小,而是
    显示总(摘要)大小。

  • -h:以人类可读的方式而不是字节数来格式化文件的大小。(例如 MB/GB/TB 等)

    请注意,即使没有 -s 选项,这也只会显示目录深处一级的大小摘要。

    输出格式为大小名称(完整路径)

于 2017-09-19T05:58:54.723 回答