概述:

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. Python自动化--语言基础5--面向对象、迭代器、range和切片的区分

    面向对象 一.面向对象代码示例: 1 class Test(): #类的定义 2 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 3 def ...

  2. 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)

    在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...

  3. Ubuntu忘记root密码怎么办?

    http://www.linuxidc.com/Linux/2016-05/131256.htm

  4. 老男孩Python全栈开发(92天全)视频教程 自学笔记18

    day18课程内容: os模块 import osprint(os.getcwd())#D:\untitled\练习题 获取当前工作目录os.chdir(r'D:\untitled\练习题\16.1切 ...

  5. nyoj222 整数中的1 数位DP

    从a枚举到b是一定会超时的.此题应该考虑数位dp,也可以理解为递推,假设给定数n,就能在O(32)复杂度算出所有小于等于n的数中1出现的次数,那么给定区间[a, b],solve(b) - solve ...

  6. Dockerfile 编译安装mysql5.7 千万不要执行.只是记录一下编译安装罢了

    开启所有核心make  20G 内存都不够玩,跑3-4个核心吧,还好. 最后的出来的镜像3G多,百思不得其解,看了官方的Dockerfile,也没什么特别,就是 apt 或者 yum.好吧,不知做了什 ...

  7. SpringBoot实战 之 异常处理篇

    在互联网时代,我们所开发的应用大多是直面用户的,程序中的任何一点小疏忽都可能导致用户的流失,而程序出现异常往往又是不可避免的,那该如何减少程序异常对用户体验的影响呢?其实方法很简单,对异常进行捕获,然 ...

  8. JavaScript基础教程2-20160612

    1.JavaScript之操作html元素,Dom Dom是抽象出来的网页对象,需要了解面向对象的思想:调用对象下的方法实现相应的功能 使用JS调用dom来创建标签. //document是网页对象 ...

  9. java:替换字符串中的ASCII码

    可对照查看网盘ASCII表http://yunpan.cn/cyxg4wQjQaGEQ (提取码:8b29) public static void main(String[] args) { // / ...

  10. 通用的Android控件抖动效果实现

    这个小程序的功能在实际的开发中会用到,比如:设置Button左右晃动,或者上下的晃动效果,下面就给出示例代码. 首先:要定义一个xml文件,命名为Shake [html] view plain cop ...