检查HDFS目录大小的方法?


Answers:


165

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

hadoop fs -dus [directory]

0.20.203(死链接)1.0.4开始,并且仍然兼容2.6.0

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

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


19
-du -s(不推荐使用-dus)
Carlos Rendon


26

扩展到Matt D和其他答案,命令可以一直使用到Apache Hadoop 3.0.0。

hadoop fs -du [-s] [-h] [-v] [-x] URI [URI ...]

它显示给定目录中包含的文件和目录的大小,或者如果只是文件,则显示文件的长度。

选项:

  • -s选项将导致文件长度的总结汇总显示,而不是单个文件。如果没有-s选项,则通过从给定路径深入1级来完成计算。
  • -h选项将在格式化文件大小人类可读的方式(例如64.0米代替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。

来源:Apache doc


12

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

hdfs dfs -du PATHTODIRECTORY | awk '/^[0-9]+/ { print int($1/(1024**3)) " [GB]\t" $2 }'

1
hdfs dfs -du PATHTODIRECTORY | awk'/ ^ [0-9] + / {print int($ 1 /(1024 3)“ [GB] \ t” $ 2}'-请更新您的命令。1024 3 之后的两个右括号。它只能是1
小家伙

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 

1

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


0

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

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


我遇到了“ hdfs”错误,它对我hadoop fs -du -h /user 有用的方式是:(我不需要使用sudo
diens

sudo不需要,应谨慎使用。
Climbs_lika_Spyder


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

-1

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

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

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

  • -h:以易于阅读的方式而不是多个字节来格式化文件的大小。(例如MB / GB / TB等)

    请注意,即使没有-s选项,它也仅显示目录深一层的大小摘要。

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


重复的答案
mrsrinivas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.