检查HDFS目录大小的方法?

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

在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获取更多信息和细节。

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

有了这个,你会得到GB的大小

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

扩展到马特D和其他人的答案,命令可以直到Apache Hadoop 3.0.0-alpha4

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

它显示给定目录中包含的文件和目录的大小,或者文件的长度,以防文件的大小。

选项:

  • -s选项将导致显示文件长度汇总摘要 ,而不是单个文件。 没有-s选项,计算是通过从给定的path进行1级深度来完成的。
  • -h选项将以可读的方式格式化文件大小(例如64.0m而不是67108864)
  • -v选项将显示列的名称作为标题行。
  • -x选项将排除结果计算中的快照 。 如果没有-x选项(默认),结果总是从所有INode计算得出,包括给定path下的所有快照。

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文档

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

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

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

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

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

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

  • -h :以可读的方式格式化文件的大小而不是多个字节。 (Ex MB / GB / TB等)

    请注意,即使没有-s选项,它也只能将大小摘要显示在一个目录中。

    输出是在窗体大小名称(完整path)