作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:
Web服务器
代理服务器
ZooKeeper
Kafka
RabbitMQ
Hadoop HDFS(本章节)
HDFS作为一个类Linux的目录的树形目录,我们业务在使用HDFS的时候也会根据不同的应用放置在不同的目录,或者不同环境使用不同的目录,实际这个和ZooKeeper的目录结构结构类似。我们对单个目录的限制,就是我们要讲的配额内容。
HDFS(Hadoop Distributed File System)的配额(Quotas)是HDFS一个重要管理功能,分别用于容量/命名空间控制。下面详细解释它们的概念、用途和操作:
配额用于限制HDFS目录能使用的资源量,防止单个用户或应用占用过多空间或文件数,确保集群资源公平使用和稳定性。
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)
[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,而非真实文件大小)。
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个(包括目录本身)。
hdfs dfsadmin -clrSpaceQuota <directory> # 清除空间配额
hdfs dfsadmin -clrQuota <directory> # 清除命名空间配额
3. 重要注意事项
QuotaExceededException
)。