Hadoop官方文档——HDFS配额Quota

概述

 

Hadoop分布式文件系统(HDFS)允许管理员为所使用的名称数量和单个目录使用的空间量设置配额。name quota和space quota独立运作,但这两种配额的管理和实施是相当类似的。

 

name quota

 

name quota是对当前目录树中的文件和目录名称的数量的硬限制。如果超出配额,文件和目录创建将会失败。配额与重新命名目录操作绑定;如果操作会导致配额违规,重命名操作将失败。即使目录违反新的配额,设置配额的尝试仍然会成功。新创建的目录没有关联的配额。最大的配额是Long.Max_Value。只等于1的配额会强制一个目录保持为空。 (是的,一个目录也占用配额!)

 

配额持久化在fsimage中,当集群启动时,如果fsimage中有违反配额的目录(可能是FsImage文件被偷偷地修改了),将会打印出一个warning。设置或者移除配额配置会创建日志条目。

 

space quota

 

space quota是该目录树中的文件使用的字节数量的硬限制。如果配额不允许写入完整的块,则块分配失败。一个区块的每个副本都会计入配额。配额重新命名目录;如果操作将导致配额违规,重命名操作将失败。新创建的目录没有关联的配额。最大的配额是Long.Max_Value。零配额仍允许创建文件,但不能将任何块添加到文件中。目录不使用主机文件系统空间,不要计入space quota。用于保存文件元数据的主机文件系统空间不计入配额。配额按照该文件的预期复制因子收费;更改文件的复制因子将会记入或扣除配额。

 

配额持久化在fsimage中。当集群启动时,如果fsimage中有违反配额的目录(可能是FsImage文件被偷偷地修改了),将会打印出一个warning。设置或者移除配额配置会创建日志条目。

 

管理员命令

 

配额由一组仅供管理员使用的命令管理。

1

dfsadmin -setQuota <N> <directory> ... <directory>

为每个目录设置name quota为N。每个目录的最大效果,如果N不是长整型,该目录不存在或者它是一个文件,或该目录将立即超出新的配额,则报告错误。

 

dfsadmin -clrQuota <directory> ... <directory>

删除每个目录的任何name quota。每个目录的最佳努力,如果该目录不存在或者是一个文件报告错误。如果目录没有配额,这不是故障。

 

dfsadmin -setSpaceQuota <N> <directory> ... <directory>

将SpaceQuota设置为每个目录的N个字节。这是目录树下所有文件的总大小的一个硬限制。SpaceQuota也把副本算在内,即1GB的数据副本消耗3GB的配额。为了方便,也可以用二进制前缀指定N。 50g为50GB,2t为2TB等等。每个目录的最佳效果,如果N不是零,也不是长整型,那么目录不存在或者是一个文件,或者该目录将立即超出新的配额。

 

dfsadmin -clrSpaceQuota <directory> ... <director>

删除每个目录的任何SpaceQuota。每个目录的最佳努力,如果该目录不存在或者是一个文件报告错误。如果目录没有配额,这不是故障。

 

Report命令

 

HDFS shell的count命令的扩展名报告配额值以及当前正在使用的名称和字节数。

 

fs -count -q <directory> ... <directory>

使用-q选项,还会报告为每个目录设置的name quota值,剩余的可用name quota,设置的SpaceQuota值和剩余的可用SpaceQuota。如果目录没有配额设置,则报告的值为none和inf。

 

操作实例

设置文件数配额

1

hdfs dfsadmin -setQuota <N> <directory>...<directory>

例如:设置目录下的文件总数为1000个hdfs dfsadmin -setQuota 1000 /p/work

清除配额

1

hdfs dfsadmin -clrQuota <directory>...<directory>

设置空间配额

1

hdfs dfsadmin -setSpaceQuota <N> <directory>...<directory>

例如:hdfs dfsadmin -setSpaceQuota 9T /p/work

设置目录大小为9T,算上副本,也就是存3T的数据

 

清除目录大小配额

1

dfsadmin -clrSpaceQuota <directory>...<director>

查看目录占用情况

image.png

字段说明

 

字段说明
QUOTA目录数+文件数的限制
REM_QUOTA可用的目录数+文件数
SPACE_QUOTA字节数限制
REM_SPACE_QUOTA可用字节数
DIR_COUNT目录数
FILE_COUNT文件数
CONTENT_SIZE当前文件大小
PATHNAMEHDFS路径

 

注意:一旦达到配额,即使文件上传不成功,也占用一定的配额,必须清除一些文件目录才能使用

1

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.protocol.DSQuotaExceededException): The DiskSpace quota of /user/caixiaoyu is exceeded: quota = 21474836480 B = 20 GB but diskspace consumed = 21530402406 B = 20.05 GB

注意:并不是删除0.05GB数据就可以继续使用,20.05GB只是超出20G的一个临界点,并不是说数据写入成功后就占用那么大,最好不要达到临界值

 

hdfs dfs -put的文件上传超出配额,用hdfs dfs -du 统计不占用空间,但是占用配额,再上传小文件会出错

用spark  api写入的文件,超出配额会在目标目录下生成temp目录,但不是有效数据的一部分

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值