哪个工具是衡量消耗HDFS空间的正确工具?
当我总结“hdfs dfs -du /”的输出时,与“hdfs dfsadmin -report”(“DFS Used”行)相比,我总是消耗更少的空间。是否存在du未考虑的数据?
答案 0 :(得分:4)
Hadoop文件系统通过将数据副本放入多个节点来提供重新标记存储。副本的数量是复制因子,通常它是一个greate。
命令hdfs dfs -du /
显示空间消耗您的数据而不进行复制。
命令hdfs dfsadmin -report
(使用行DFS)显示实际磁盘使用情况,同时考虑数据复制。因此,从dfs -ud
命令获取数字时应该会大几倍。
答案 1 :(得分:1)
HDFS存储如何正常工作:
Let say replication factor = 3 (default)
Data file size = 10GB (i.e xyz.log)
HDFS will take 10x3 = 30GB to store that file
根据您使用的命令类型,您将获得HDFS占用空间的不同值(10GB与30GB)
如果您使用的是最新版本的Hadoop,请尝试以下命令。就我而言,这在Hortonworks数据平台(HDP)2.3。*及更高版本上非常有效。这也适用于cloudera的最新平台。
hadoop fs -count -q -h -v /path/to/directory
( - q = quota,-h =人类可读值,-v =详细)
此命令将在输出中显示以下字段。 QUOTA REMAINING_QUOTA SPACE_QUOTA REMAINING_SPACE_QUOTA DIR_COUNT FILE_COUNT CONTENT_SIZE FILE_NAME
哪里
CONTENT_SIZE = real file size without replication (10GB) and
SPACE_QUOTA = space occupied in HDFS to save the file (30GB)
注意: 在此控制复制因子:修改" dfs.replication"在默认的hadoop安装目录的conf / dir下的hdfs-site.xml文件中找到的属性)。如果您有多节点群集,建议使用Ambari / Cloudera Manager更改此值。
还有其他命令可以检查存储空间。 E.G hadoop fsck,hadoop dfs -dus,