datanode非dfs预留空间设置

在使用hdfs存储的时候可能会遇到一个问题:明明设置hadoop dfs.datanode.du.reserved预留空间的,但是磁盘还是被写满了。

当你挂载磁盘作为datanode的存储空间,如果磁盘大小为500G当你使用df -h 可能会发现上面显示(举个例子):总磁盘大小500G,使用了430G,剩余50G,这里就会有个问题:500G-(430G+50G)=20G, 
还差了20G空间。

就是因为这20G空间的问题导致你磁盘写满,如果你配置hadoop dfs.datanode.du.reserved为小于20G的话,那么磁盘就会被写满,预留空间就没有起到实际的作用,一个解决的办法就是设置hadoop dfs.datanode.du.reserved的值 = 用总磁盘大小 - 使用的 - 剩余的得到的差值 + 你想设置的预留空间大小。

比如: 
在上面的基础上你设置预留空间为10G,那么dfs.datanode.du.reserved就可以设置为: 

500G-(430G+50G) + 10G = 30G。



对于datanode配置预留空间的方法 为:在hdfs-site.xml添加如下配置

 <property>

    <name>dfs.datanode.du.reserved</name>

    <value>10737418240</value>

 

 </property>

 

dfs.datanode.du.reserved的单位为字节,上面的预留空间为10G,预留30G:32212254720 

 

预留20G:21474836480

 

预留空间可能遇到的问题:预留了10G,但是该节点磁盘空间去没有真正剩余,而是一直会放数据,原因可能是如下方面:

 

通过 df -h 查看容量显示如下:
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda4             243G  200G   31G  87% /data

注:说明总容量为243G,使用了200G,可用31G 这里有个问题,使用量+可用量!=总容量,少掉了12G,这就是问题所在。
dfs.datanode.du.reserved设置为10G的话

通过hadoop dfsadmin -report 查看显示如下

Configured Capacity: 228260941824 (232.58 GB)
DFS Used: 208414818078 (194.10 GB)
Non DFS Used: 0 (0 B)
DFS Remaining: 19846123746 (38.48 GB)

Configured Capacity显示的dfs.data.dir指定的目录空间总容量大小-dfs.datanode.du.reserved的容量,
如果像之前设置 dfs.datanode.du.reserved为10G的话,Configured Capacity为:232.58 GB,DFS Remaining则为38.48G,
但实际/dev/sda4 可用空间才只有31G,所以有数据的话会一直会存入该节点,直到放满。




解决方法:将dfs.datanode.du.reserved设置更大。目前设置为30G
这样,hadoop dfsadmin -report 查看
Configured Capacity: 228260941824 (212.58 GB)
DFS Used: 208414818078 (194.10 GB)
Non DFS Used: 0 (0 B)
DFS Remaining: 19846123746 (18.48 GB)

dfs可用空间18.48<31G,所以当dfs全部用完,磁盘/dev/sda4还是有13G空间空闲,达到要的效果!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值