hadoop2.6的datanode多存储硬盘设置数据副本存放策略

集群中每台机器使用12块硬盘,部分节点少数盘使用率超过90%,其它盘只有80%,即所有盘使用不均衡,如果不做特殊设置,一台机器整体使用空间还有的情况下,部分磁盘可能已经100%了。如何避免这个问题?

在hadoop2.6中,datanode数据副本存放磁盘选择策略有两种方式:
第一种是沿用hadoop1.0的磁盘目录轮询方式:RoundRobinVolumeChoosingPolicy
第二种是选择可用空间足够多的磁盘方式存储:AvailableSpaceVolumeChoosingPolicy

选择策略对应的配置项是:
<property>
    <name>dfs.datanode.fsdataset.volume.choosing.policy</name>
    <value>org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy</value>
</property>

该参数默认值是RoundRobinVolumeChoosingPolicy,这种默认策略DataNode会以轮询的方式选择磁盘存储数据,每个磁盘的数据量存储很接近,如果某些盘比较小的情况,就会出现这些小盘磁盘使用率比其他盘高,配置后重启datanode。

该参数配置成AvailableSpaceVolumeChoosingPolicy,DataNode在选择磁盘存储数据时,会选择可用磁盘空间最大的磁盘来存储数据,这样保证了小盘不会存储过多的数据量。

在采用第二种方式时还有另外两个参数会用到:
dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold
默认值是10737418240,既10G,一般使用默认值就行,以下是该选项的官方解释:
This setting controls how much DN volumes are allowed to differ in terms of bytes of free disk space before they are considered imbalanced. If the free space of all the volumes are within this range of each other, the volumes will be considered balanced and block assignments will be done on a pure round robin basis.
意思是首先计算出两个值,一个是所有磁盘中最大可用空间,另外一个值是所有磁盘中最小可用空间,如果这两个值相差小于该配置项指定的阀值时,则就用轮询方式的磁盘选择策略选择磁盘存储数据副本。源代码如下:

public boolean areAllVolumesWithinFreeSpaceThreshold() {
      long leastAvailable = Long.MAX_VALUE;
      long mostAvailable = 0;
      for (AvailableSpaceVolumePair volume : volumes) {
        leastAvailable = Math.min(leastAvailable, volume.getAvailable());
        mostAvailable = Math.max(mostAvailable, volume.getAvailable());
      }
      return (mostAvailable - leastAvailable) < balancedSpaceThreshold;
    }
dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction

默认值是0.75f,一般使用默认值就行,以下是该选项的官方解释:
This setting controls what percentage of new block allocations will be sent to volumes with more available disk space than others. This setting should be in the range 0.0 - 1.0, though in practice 0.5 - 1.0, since there should be no reason to prefer that volumes with
意思是有多少比例的数据副本应该存储到剩余空间足够多的磁盘上。该配置项取值范围是0.0-1.0,一般取0.5-1.0,如果配置太小,会导致剩余空间足够的磁盘实际上没分配足够的数据副本,而剩余空间不足的磁盘取需要存储更多的数据副本,导致磁盘数据存储不均衡。

对应的配置是:

 <property>
    <name>dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction</name>
    <value>0.9</value>
</property>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值