我知道du -sh
常见的Linux文件系统。但是如何使用HDFS做到这一点?
Answers:
hadoop fs -du -s -h /path/to/dir
以可读形式显示目录的大小。
hdfs -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.0米代替67108864)
- 的-v选项将显示列的名称作为标题行。
- 该-x选项排除快照从结果计算。如果没有-x选项(默认值),则总是从所有INode(包括给定路径下的所有快照)计算结果。
+-------------------------------------------------------------------+
| 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。
尝试计算目录中特定文件组的总数时,该-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
Hadoop集群上已用空间的百分比
sudo -u hdfs hadoop fs –df
特定文件夹下的容量:
sudo -u hdfs hadoop fs -du -h /user
hadoop fs -du -h /user
有用的方式是:(我不需要使用sudo
)
sudo
不需要,应谨慎使用。
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选项,它也仅显示目录深一层的大小摘要。
输出形式为大小名称(完整路径)