dfs.datanode.du.reserved是什么鬼
dfs.datanode.du.reserved表示的是datanode在对磁盘写数据的时候,保留多少空间给非HDFS使用。这个参数主要是为了防止磁盘空间被写满导致的HDFS异常。
最近遇到一个HDFS磁盘空间写满的问题,原因也很简单,就是因为dfs.datanode.du.reserved这个参数没有考虑到操作系统保留块空间的问题。
比如:
一块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