HDFS配额管理(2.4.1) 2015-09-16 21:04

概述

在HDFS中,管理员可以通过为每一个目录设置一定名称和空间上的配额。

名称配额(Name Quota)

名称配额(Name Quota):控制某一个目录下的目录和文件数量。注意:被设置的目录本身也占用一个名称配额。因此,设置配额为1则表示控制该目录为空目录。

1
2
3
4
5
6
# 设置目录的名称配额
hdfs dfsadmin -setQuota N <DirName>
# 清除目录的名称配额
hdfs dfsadmin -clrQuota <DirName>
# 查询目录的配额和当前可用余额
hdfs dfs -count -q <DirName>

举例:

[root@cheyo ~]# hdfs dfs -ls /test
[root@cheyo ~]# hdfs dfs -mkdir /test/abc
[root@cheyo ~]# hdfs dfsadmin -setQuota 3 /test/abc
[root@cheyo ~]# hdfs dfs -touchz /test/abc/f{1,2}
[root@cheyo ~]# hdfs dfs -ls /test/abc
Found 2 items
-rw-r--r--   3 root supergroup          0 2015-09-16 20:23 /test/abc/f1
-rw-r--r--   3 root supergroup          0 2015-09-16 20:23 /test/abc/f2
[root@cheyo ~]# hdfs dfs -touchz /test/abc/f3
touchz: The NameSpace quota (directories and files) of directory /test/abc is exceeded: quota=3 file count=4
[root@cheyo ~]# hdfs dfs -ls /test/abc
Found 2 items
-rw-r--r--   3 root supergroup          0 2015-09-16 20:23 /test/abc/f1
-rw-r--r--   3 root supergroup          0 2015-09-16 20:23 /test/abc/f2
[root@cheyo ~]# hdfs dfs -count -q /test/abc
 3      0    none     inf      1       2       0 /test/abc

空间配额(Space Quota)

空间配额(Space Quota):控制某一个目录空间总大小。注意:多个副本的容量会被计算在内。配额为0时,文件可以被创建,但是不能向文件中写入块。

1
2
3
4
5
6
# 设置目录的空间配额
hdfs dfsadmin -setSpaceQuota <quota> <dirname>...<dirname>
# 清除目录的空间配额
hdfs dfsadmin -clrSpaceQuota <dirname>...<dirname>
# 查询目录的配额和当前可用余额
hdfs dfs -count -q <DirName>

举例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
hdfs dfs -mkdir /test/abc
hdfs dfsadmin -setSpaceQuota 512M /test/abc
# 成功,三副本,总战胜381M,不超过512M
dd if=/dev/zero of=/tmp/file1 bs=1M count=127
# 失败,三副本,总占用784M(不足1块大小时,仍算一个块的空间128M),超过512M
dd if=/dev/zero of=/tmp/file2 bs=1M count=129

# 总有10个名称空间配额,还剩8个.总有512M空间配额,还剩136M
hdfs dfs -count -q /test/abc
10   8      536870912      137363456         1        1        133169152 /test/abc

参考文档

  1. HDFS配额操作实战
  2. HDFS Quotas Guide
Tags: #HDFS #多租户    Post on Hadoop