dfs.datanode.du.reserved
官方解释为:适用于非分布式文件系统 (DFS) 使用的保留空间(字节/卷)。
通俗的意思:预留磁盘的一部分空间给操作系统用,这个参数主要是为了防止磁盘空间被写满导致的HDFS异常。通常系统默认保留5%的磁盘空间给操作系统用。
那么每个盘可用的HDFS存储空间是:(总存储空间 - dfs.datanode.du.reserved ),其在 hdfs-default.xml 中的值如下:
dfs.datanode.du.reserved
75G
Reserved space in bytes per volume. Always leave this much space free for non dfs use.
举例:
一块4T的盘,格式化完了以后剩下3.6T,去掉5%的系统保留空间200G,就剩下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,那么可以调整系统保留空间为2%即75G左右,dfs.datanode.du.reserved设置为200G
参考链接:
https://www.jianshu.com/p/508449d8f12c
https://blog.csdn.net/qq_20641565/article/details/54970107
https://blog.csdn.net/oDaiLiDong/article/details/69664784