Non DFS

Non DFS是什么,使用量高的原因?

Node

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@data21 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rootvg-lv01
220G 29G 180G 14% /
tmpfs 63G 0 63G 0% /dev/shm
/dev/sda1 190M 39M 142M 22% /boot
/dev/sdb 440G 17G 402G 4% /ssd1
/dev/sdc 1.8T 1.5T 335G 82% /hdd1
/dev/sdd 1.8T 1.5T 332G 82% /hdd2
/dev/sde 1.8T 1.5T 336G 82% /hdd3
/dev/sdf 1.8T 1.5T 338G 82% /hdd4
/dev/sdg 1.8T 1.5T 316G 83% /hdd5
/dev/sdh 1.8T 1.5T 324G 82% /hdd6
/dev/sdi 1.8T 1.5T 342G 81% /hdd7
/dev/sdj 1.8T 1.5T 331G 82% /hdd8

以data21节点为例:

  1. hdfs挂载在/dev/sd[b-j]总共8个盘,每个盘1.8T,共约14.4T,与capacity=14.49T一致。dfs.datanode.du.reserved项,这个配置是设置hadoop保留一部分不用于hdfs存储的空间,至于这些空间的用处,可能是用于shuffle过程中map写在本地磁盘上的数据,或者其他的一些,默认为0,因此此时hdfs配置的存储空间就为14.49T,如果配了1个T,那么图一显示的ConfiguredCapacity=13.4T了,Configured Capacity = Total Disk Space - Reserved Space.

  2. Used是指hdfs的使用空间,Remaining是剩余的空间,NonDFSUsed是什么呢,而且是很大。Stackoverflow上面有一篇回答:

    我有100G的磁盘,dfs.datanode.du.reserved配置是30G,系统文件和其它一些文件一共40G,dfs使用了10个G,那么NonDFSUsed使用了多少?Non DFS used = 100GB(Total) - 30 GB( Reserved) - 10 GB (DFS used) - 50GB(Remaining) = 10 GB。

    所以结论就是你可能配了30个G给系统或者其它一些文件的存储空间,那么DFS就有70G的使用空间,但是其它文件的空间不够用,必然会消耗DFS配置的70G的空间,所以NonDFSUsed指的是侵占DFS容量的那部分空间。

    The term “Non DFS used” should really be renamed to something like “How much configured DFS capacity are occupied by non dfs use”

  3. 实际计算时Size != Used + Avail,因为就是在ext2/ext3/ext4文件系统下,系统会为root用户预留5%的使用空间,NonDFSUsed默认包含了那文件系统预留的5%空间了。

    linux的硬盘分区程序会自动为root或指定的用户保留一定的磁盘空间默认是5%,在较大的分区或是不重要的分区上这种设置会占据过多不必要的空间, 利用mke2fs的-m reserved-percentage选项可以调整这个设置来获得更多的磁盘空间且不影响性能。而在创建了文件系统之后,用户可以用tune2fs来修 改这个设置比如tune2fs -m 1 /dev/sda4可以将保留的空间设置为1%

  4. 在降低保留空间后,发现新旧节点间Non DFS Used容量仍然差别高达几百G,这是什么原因呢?是因为每个block的meta文件占用0.5MB,新添加的节点DFSused比老节点少,block占用少,其meta文件自然也少。meta文件本身占用ext4存储,作为Non DFS Used计算。


参考资料:

  1. HadoopWeb界面:Hadoop Non DFS Used concept
  2. 修改ext4预留空间
如果文章对您有帮助,感谢您的赞助支持!