检查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)