dfs.datanode.du.reserved 表示的是datanode在对磁盘写数据的时候,保留多少空间给非HDFS使用。

这个参数主要是为了防止磁盘空间被写满导致的HDFS异常。默认值为 75G

比如:

一块4T的盘,格式化完了以后剩下3.6T,去掉5%的系统保留空间,就剩下3.4T。

但是hbase是按照磁盘的总空间3.6T来算写入的,此时可以写入的实际只有3.4T。这里总空间和实际空间的差值就是0.2T,也就是200G。

而此时如果dfs.datanode.du.reserved设置为小于200G,那么hbase就存在空间写满的风险。

因此,我们在配置HBase的时候,需要根据系统实际使用空间来配置dfs.datanode.du.reserved参数的大小。

解决办法:

1、将系统保留空间调整小(总空间-系统保留空间 )

tune2fs  -m 1 /dev/diskname

备注:系统默认保留5%的空间,也就是tune2fs -m 5 /dev/diskname。上面的命令即保留为1%

2、将dfs.datanode.du.reserved调大

最佳实践:

因为HDFS一般使用的数据盘都是T级别的硬盘,系统默认保留5%其实是很浪费的。因此最好的解决办法是同时进行1、2两种方法的调整。

推荐系统保留空间为2%,并将dfs.datanode.du.reserved做调整。

比如我们的盘是4T,格式化后可用空间为3.6T,系统保留空间为75G左右,dfs.datanode.du.reserved设置为200G