概述:

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

Name Quotas:

名称配额对根目录下的树的文件和目录的数量进行严格的限制。

如果超出配额,文件和目录创建失败。配额不变

对于重命名的目录;如果操作将导致配额冲突,则重命名操作失败。

即使目录违反了新的配额,设置配额的操作仍然会成功。新创建的目录没有相关的配额。最大的配额是Long.Max_Value。一个命令的配额会使目录保持空。(是的,一个目录对它自己的配额有影响!)
配额限制制与fsimage永久生效的。当开始时,如果fsimage违反了配额,就会对此类违规行为进行警告。(对于一开始设置配额的时候目录下文件个数已经超过了设置的个数,则对此类操作进行告警,操作动作不会失败)

设置或删除一个配额都会创建日志目录

操作:

设置目录的配额空间,让目录下存储的文件不超过N 个

  • hdfs dfsadmin -setQuota <N> <directory>...<directory>
  • Set the name quota to be N for each directory. Best effort for each directory, with faults reported if N is not a positive long integer, the directory does not exist or it is a file, or the directory would immediately exceed the new quota.

  • 设置每个目录的名称配额为N个。对于受影响每个目录。如果N不是一个正整数,如果目录不存在,或者是一个文件,或者目录将立即超过新的配额。

       清除目录的配额空间

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

    Remove any name quota for each directory. Best effort for each directory, with faults reported if the directory does not exist or it is a file. It is not a fault if the directory has no quota.

Space Quotas

空间配额对于根目录下的树中的文件所使用的字节数是一个严格的限制。

如果配额不允许写入一个完整的块,块分配就会失败。一个块的每个副本都与配额相对应。

对于重命名的目录,配额不变

如果重命名操与设置的配额冲突,则重命名操作失败。

新创建的目录没有相关的配额。

配额的最大值是Long.Max_Value。

配额为零的情况下仍然允许创建文件,但不能往文件中写东西。

创建目录不使用主机文件系统空间,也不要计算空间配额。

用于保存文件元数据的主机文件系统空间不被计算在配额内。

对文件的预期复制因子收取配额;更改一个文件的复制份数将会导致信用卡或借方配额。(配额考虑到了复制,当1个文件是1G,复制是3份,设置配额是2G 则上传报错)

配额现在制与fsimage是持久的。当开始时,如果fsimage立即违反了配额,就会对此类违规行为进行警告。设置或删除一个配额会创建一个日志条目。(对于一开始设置配额的时候目录下配额空间已经超过了设置的空间,则对此类操作进行告警,操作动作不会失败)

操作:

设置目录的存储空间配额

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

    Set the space quota to be N bytes for each directory. This is a hard limit on total size of all the files under the directory tree. The space quota takes replication also into account, i.e. one GB of data with replication of 3 consumes 3GB of quota. N can also be specified with a binary prefix for convenience, for e.g. 50g for 50 gigabytes and 2t for 2 terabytes etc. Best effort for each directory, with faults reported if N is neither zero nor a positive integer, the directory does not exist or it is a file, or the directory would immediately exceed the new quota.

  • 设置每个目录的空间配额为N个字节。这是对目录树下所有文件的总大小的严格限制。空间配额也考虑到复制,即1 GB的数据复制3消耗3GB的配额。N也可以用一个二进制前缀指定为方便起见,如50 g为50 g,2 t 2 tb等。尽最大努力为每个目录,与缺陷报告如果N是零和一个正整数,目录不存在或它是一个文件,或者目录会立即超过新配额。
  • 清除目录的存储空间配额命令
  • hdfs dfsadmin -clrSpaceQuota <directory>...<director>

    Remove any space quota for each directory. Best effort for each directory, with faults reported if the directory does not exist or it is a file. It is not a fault if the directory has no quota.

  • 移除每个目录的空间配额。对于每个有效的目录,如果目录不存在或它是一个文件,就会报告设置错误。对应目录来说没有配额不会报错。

测试一,配额文件和目录限制:

设置目录的文件+目录总数不超过3,(这里不包含3 应该是总数是2)

-查看当前情况

hz目录下有1个文件 2.txt

执行  hdfs dfsadmin -setQuota 3 /user/hz

创建目录a --成功

创建目录b--失败(报超出配额限制,可见参数是小于不包含)

查询目录下文件数 是2个

尝试上传一个文件(继续报错,配额超出)

对于已经有2个文件,修改配额为1 则不报错

清除配额,上传文件成功

测试二,配额空间限制:

查看当前的空间大小

说明当前空间配额最小为 17*3=51字节

当设置配额小于 目前已经有的大小时,则会从其他地方借用,显示为-

设置配额为50,命令执行成功

在此情况下 无法在继续传文件

创建一个32字节的文件 测试是否副本占用配额信息

上传文件,32+17=49

测试结果报错,超出了配额限制

重新设置配额为60

查询当前配额剩余  =9

计算为 60-17*3副本=9

总结:对于空间限制,配额空间是计算副本数的

测试 创建目录是否占用配额空间

HDFS配额管理(实战)的更多相关文章

  1. HDFS配额管理指南

    原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_quota_admin_guide.html Hadoop分布式文件系统(HDFS)允许管理员为每个 ...

  2. linux磁盘管理系列一:磁盘配额管理

    磁盘管理系列 linux磁盘管理系列一:磁盘配额管理   http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html l ...

  3. 第二章· Redis管理实战

    数据类型 管理实战 数据类型 String: 字符串类型 Hash: 哈希类型 List: 列表类型 Set: 集合类型 Sorted set: 顺序集合类型 管理实战 通用操作

  4. CentOS6.8逻辑卷管理实战

    CentOS6.8逻辑卷管理实战 要求:利用现有的四块磁盘,创建一个有两个PV组成的大小为80G的名为testvg的VG:要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv:挂载 ...

  5. 《SQLSERVER2012实施与管理实战指南》前4章节笔记内容

    <SQLSERVER2012实施与管理实战指南>前4章节笔记内容 <SQLSERVER2012实施与管理实战指南>的前面4章是<SQLSERVER企业级平台管理实践> ...

  6. 搞懂分布式技术5:Zookeeper的配置与集群管理实战

    搞懂分布式技术5:Zookeeper的配置与集群管理实战 4.1 配置文件 ZooKeeper安装好之后,在安装目录的conf文件夹下可以找到一个名为“zoo_sample.cfg”的文件,是ZooK ...

  7. openstack nova 基础知识——Quota(配额管理)

    一.什么是配额(quota)管理 简单的讲就是控制用户资源的数量.在openstack里,管理员为每一个工程(project)分配的资源都是有一定限制的,这些资源包括实例(instance).cpu. ...

  8. SpringBoot与Shiro整合权限管理实战

    SpringBoot与Shiro整合权限管理实战 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] *观看本文章需要有一定SpringBoot整合经验* Shiro框架简介 Apach ...

  9. quota - linux磁盘配额管理

    磁盘管理系列 linux磁盘管理系列一:磁盘配额管理   http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html l ...

随机推荐

  1. bzoj1150 [CTSC2007]数据备份Backup 双向链表+堆

    [CTSC2007]数据备份Backup Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2727  Solved: 1099[Submit][Stat ...

  2. 利用fiddler和mock调试本地微信网页

    利用fiddler和mock调试本地微信网页 微信公众号网页是比较特殊的页面,普通页面直接打开即可访问,但对于需要请求微信相关接口的部分需要安全域名认证.这导致了使用mock数据进行开发的页面没办法走 ...

  3. java字符串以及字符类型基础

    介绍一下java字符集和字符的编码方式, 首先要区分一下字符集和字符编码.所谓的字符集 类似于unicode,GB2312,GBK,ASCII等等.因为一开始只有26个英文字母需要 编一下号.所有用下 ...

  4. SQLite常用函数及语句

    SQLite3.0使用的是C的函数接口,常用函数如下: sqlite3_open() //打开数据库 sqlite3_close() //关闭数据库 sqlite3_exec() //执行sql语句, ...

  5. B. Pyramid of Glasses

    原题链接 B. Pyramid of Glasses Mary has just graduated from one well-known University and is now attendi ...

  6. hdu 2018递推

    第n月的牛的数量由第n-1个月的老牛加上n-1个月新生的小牛,得到公式F(n)=F(n-1)+F(n-3) AC代码: #include<cstdio> const int maxn=55 ...

  7. Web/app端自动化测试对比

    Web/app端自动化测试 做了一段时间的Android自动化测试,对比个人之前做的web端自动化测试,有一些感想.(由于个人接触的时间也不是太久,很多东西理解也并不深刻,先写下菜鸟时期的感想.) 区 ...

  8. hexo持续更新记录

    port:50187

  9. PCI、CPCI、CPCIE 区别、特点

    PCI.CPCI.CPCIE 区别.特点 CPCI总线 •PCI总线作为处理器系统的局部总线,主要目的是为了连接外部设备,而不是作为处理器的系统总线连接Cache和主存储器 •(1) PCI总线空间与 ...

  10. Android常见Crash类型分析(一)

    问题1.   java.lang.IllegalStateException: The specified child already has a parent. You must call remo ...