1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[hdfs@cdh-worker1 ~]$ hdfs dfsadmin -report
Configured Capacity: 601516597248 (560.21 GB)
Present Capacity: 565009399351 (526.21 GB)
DFS Remaining: 469261164350 (437.03 GB)
DFS Used: 95748235001 (89.17 GB)
DFS Used%: 16.95%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0

-------------------------------------------------
Live datanodes (3):

Name: 192.168.2.220:50010 (cdh-worker1)
Hostname: cdh-worker1
Rack: /default
Decommission Status : Normal
Configured Capacity: 200505532416 (186.74 GB)
DFS Used: 31916771923 (29.72 GB)
Non DFS Used: 2634159533 (2.45 GB)
DFS Remaining: 154663588172 (144.04 GB)
DFS Used%: 15.92%
DFS Remaining%: 77.14%
Configured Cache Capacity: 4294967296 (4 GB)
Cache Used: 0 (0 B)
Cache Remaining: 4294967296 (4 GB)
Cache Used%: 0.00%
Cache Remaining%: 100.00%
Xceivers: 10
Last contact: Mon Jun 13 17:04:17 CST 2022

... 其他节点数据省略

如上:是执行 hdfs dfsadmin -report 输出的部分结果。

对于 Configured CapacityPresent CapacityDFS UsedNon DFS UsedDFS Remaining 概念经常混淆,今天特地抽时间研究了下,如有不对的地方,还请留言指正,谢谢。

  • Configured Capacity(已配置容量) = dfs.datanode.data.dir(datanode 数据目录) 所在的总磁盘空间(df -h 的 size 值) - 每个磁盘的 dfs.datanode.du.reserved(适用于非 DFS 使用的保留空间)
  • Present Capacity(当前容量)= 所有数据节点的 [DFS Used + DFS Remaining] 之和
  • non DFS Used(占用了应该属于 HDFS 的多少空间)= dfs.datanode.data.dir 所在磁盘中非 hdfs 数据量 - 所在磁盘的磁盘的 dfs.datanode.du.reserved - 分区的保留空间 = Configured Capacity - DFS Remaining - DFS Used - 分区的保留空间。

值得一提的是:当 dfs.datanode.du.reserved 设置的空间占满后,non DFS Used 才有值。

分区的保留空间:linux 的硬盘分区程序会自动为 root 或指定的用户保留一定的磁盘空间默认是 5%。大小计算示例:

这其实也是 df -h 命令,(free_space + used_space) != total_size 的原因,具体可参考:https://unix.stackexchange.com/questions/25602/why-is-free-space-used-space-total-size-in-df

参考资料: