许吉友 - 运维

HDFS 配额

官方文档:https://hadoop.apache.org/docs/r3.3.0/hadoop-project-dist/hadoop-hdfs/HdfsQuotaAdminGuide.html

Hadoop分布式文件系统(HDFS)允许管理员为使用的名称数和用于单个目录的空间量设置配额。名称配额和空间配额是独立运行的,但是两种类型的配额的管理和实现是紧密平行的。

名称配额

名称配额是对根于该目录的树中文件和目录名称数量的硬限制。如果超出配额,文件和目录创建将失败。配额使用重命名的目录;如果该操作将导致配额违反,则重命名操作将失败。即使目录违反新的配额,设置配额的尝试仍将成功。新创建的目录没有关联的配额。最大配额是Long.Max_Value。配额为1会强制目录保持空白。(是的,目录计入自己的配额!)

fsimage的配额是持久的。启动时,如果fsimage立即违反配额(可能是fsimage被秘密修改),则会为每种此类违反打印警告。设置或删除配额将创建日志记录。

空间配额

空间配额是对根于该目录的树中文件所使用的字节数的硬性限制。如果配额不允许写入整个块,则块分配失败。块的每个副本均计为配额。配额使用重命名的目录;如果重命名操作将导致配额违反,则该操作将失败。新创建的目录没有关联的配额。最大配额是Long.Max_Value。配额为零仍然允许创建文件,但是不能将任何块添加到文件中。目录不使用主机文件系统空间,也不计入空间配额。用于保存文件元数据的主机文件系统空间不计入配额。配额按文件的预期复制因子收费;更改文件的复制因子将贷记或借记配额。

fsimage的配额是持久的。启动时,如果fsimage立即违反配额(可能是fsimage被秘密修改),则会为每种此类违反打印警告。设置或删除配额将创建日志记录。

存储类型配额

存储类型配额是对根目录目录树中的文件使用特定存储类型(SSD,DISK,ARCHIVE)的硬性限制。它在许多方面类似于存储空间配额,但是可以对群集存储空间使用情况进行细粒度控制。要在目录上设置存储类型配额,必须在目录上配置存储策略,以允许根据存储策略将文件存储在不同的存储类型中。有关更多信息,请参见HDFS存储策略文档

可以将存储类型配额与空间配额和名称配额结合使用,以有效地管理集群存储使用情况。例如,

  1. 对于配置了存储策略的目录,管理员应为资源限制存储类型(例如SSD)设置存储类型配额,并为其他存储类型和总体空间配额保留配额限制值较小或默认为无限制。HDFS将根据存储策略从目标存储类型和总体空间配额中扣除配额。
  2. 对于未配置存储策略的目录,管理员不应配置存储类型配额。即使特定的存储类型不可用(或可用,但存储类型信息配置不正确),也可以配置存储类型配额。但是,在这种情况下,建议使用总体空间配额,因为对于存储类型配额实施而言,存储类型信息不可用或不准确。
  3. DISK上的存储类型配额用途有限,除非DISK不是主要存储介质。(例如,具有主要ARCHIVE存储的集群)。

命令

配额由一组仅对管理员可用的命令管理。

报告命令

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