首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Hadoop HDFS-配额(Quotas)

Hadoop HDFS-配额(Quotas)

作者头像
运维小路
发布2025-07-24 17:46:22
发布2025-07-24 17:46:22
15600
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:

Web服务器

代理服务器

ZooKeeper

Kafka

RabbitMQ

Hadoop HDFS(本章节)

HDFS作为一个类Linux的目录的树形目录,我们业务在使用HDFS的时候也会根据不同的应用放置在不同的目录,或者不同环境使用不同的目录,实际这个和ZooKeeper的目录结构结构类似。我们对单个目录的限制,就是我们要讲的配额内容。

HDFS(Hadoop Distributed File System)的配额(Quotas)是HDFS一个重要管理功能,分别用于容量/命名空间控制。下面详细解释它们的概念、用途和操作:

HDFS 配额 (Quotas)

配额用于限制HDFS目录能使用的资源量,防止单个用户或应用占用过多空间或文件数,确保集群资源公平使用和稳定性。

1. 配额类型
  • 空间配额 (Space Quota):限制目录及其所有子目录占用的总物理存储空间(字节数)。超过配额时,任何写入该目录或其子目录的操作都会失败。
  • 命名空间配额 (Namespace Quota):限制目录下允许的文件和子目录总数(包括自身)。超过配额时,无法在该目录下创建新文件或子目录。
2. 关键命令
  • 设置空间配额
代码语言:javascript
代码运行次数:0
运行
复制
hdfs dfsadmin -setSpaceQuota <quota> <directory>
# 示例:设置 /user/alice 目录空间配额为 1TB
[root@node1 ~]# hdfs dfsadmin -setSpaceQuota 500m /test1
[root@node1 ~]# hdfs dfs -put apache-zookeeper-3.8.1-bin.tar.gz /test1
[root@node1 ~]# hdfs dfs -count -q /test1
        none             inf       524288000       484164113            1            3           13374629 /test1
[root@node1 ~]# du -sh apache-zookeeper-3.8.1-bin.tar.gz 
13M	apache-zookeeper-3.8.1-bin.tar.gz
[root@node1 ~]# 

none:命名空间配额未设置(无文件数量限制)

inf:命名空间剩余额度为无限(因为未设置配额)

524288000:空间配额总额度(500MB,即 500×1024×1024=524288000 字节)

484164113:空间剩余额度(总配额 - 已使用空间 = 524288000 - 40123887 = 484164113 字节,约 461MB)

后续字段:目录数(1)、文件数(3)、文件总大小(13374629 字节≈13MB,未计算副本)、路径(/test1)

代码语言:javascript
代码运行次数:0
运行
复制
[root@node1 ~]# hdfs dfs -put apache-zookeeper-3.8.1-bin.tar.gz /test1
put: The DiskSpace quota of /test1 is exceeded: quota = 1048576 B = 1 MB but diskspace consumed = 402671535 B = 384.02 MB

这个是配额不够的时候上传错误提示,设置是1m,但是提示需要384m(这里取的值应该是128M*3,而非真实文件大小)。

  • 设置命名空间配额
代码语言:javascript
代码运行次数:0
运行
复制
hdfs dfsadmin -setQuota <quota> <directory>
# 示例:设置 /user/alice/project 目录最多包含 10000 个文件/目录
[root@node1 ~]# hdfs dfsadmin -setQuota 10 /test2
[root@node1 ~]# hdfs dfs -count /test2
           1            0                  0 /test2
[root@node1 ~]# hdfs dfs -count -q /test2
          10               9            none             inf            1            0                  0 /test2
[root@node1 ~]# 

这里显示命名空间配额是10个文件,剩余9个(包括目录本身)。

  • 清除配额
代码语言:javascript
代码运行次数:0
运行
复制
hdfs dfsadmin -clrSpaceQuota <directory>  # 清除空间配额
hdfs dfsadmin -clrQuota <directory>        # 清除命名空间配额

3. 重要注意事项

  • 配额继承:配额仅作用于设置目录及其子目录,不向上继承。
  • 硬性限制:超限会导致写入/创建操作立即失败(返回QuotaExceededException)。
  • Replication影响:空间配额计算的是实际物理存储(含副本),例如1GB文件(副本因子3)占用约3GB空间。
  • 目录本身计数:命名空间配额包含目录自身(即空目录已占用1个名额)。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HDFS 配额 (Quotas)
    • 1. 配额类型
    • 2. 关键命令
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档