1. 程式人生 > >關於HDFS中dfs.datanode.du.reserved系統空間預留引數

關於HDFS中dfs.datanode.du.reserved系統空間預留引數

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