在Hadoop中,出于存储成本和提高空间使用率的考量,有必要对开放给业务人员使用的hdfs目录的限额做一定的限制,培养用户定期清理长期不使用数据的习惯,本文介绍如何给HDFS目录设置限额。
关于HDFS使用配额
Hadoop提供两种配额模式Name Quotas和Space Quotas。Name Quotas和Space Quotas是相互独立的(即可以同时设置两种配额也可以只设置其中一个,互不冲突)。
- Name Quotas——主要限制指定HDFS路径下文件和目录数目(含父目录),但不会对该目录下文件大小做限制。
- Space Quotas——主要是下限值指定HDFS路径下文件大小,但不会目录下的文件数量做限制,每个Block的副本都会计入配额。
设置HDFS使用配额的方式
- 设置目录Name Quotas:
hdfs dfsadmin -setQuota <N> <directory>...<directory>
- 清除目录Name Quotas:
hdfs dfsadmin -clrQuota <directory>...<directory>
- 设置目录Space Quotas:
hdfs dfsadmin -setSpaceQuota <N> <directory>...<directory>
- 清除目录Space Quotas:
hdfs dfsadmin -clrSpaceQuota <directory>...<directory>
- 查看指定目录配额使用情况:
hadoop fs -count -q [-h] [-v] <directory>...<directory>
显示Name和Space配额,如果未设置的配额的类型则返回结果显示none和inf。
举例说明
给test配置50G的配额
hdfs dfsadmin -setSpaceQuota 50G /warehouse/test
hdfs dfs -count -q -h /warehouse/test
none inf 50 G 37.6 G 49 36 4.1 G /warehouse/test