HDFS 副本存放磁盘选择策略

在 HDFS 中,DataNode 将数据块存储到本地文件系统目录中,具体的目录可以通过配置 hdfs-site.xml 里面的 dfs.datanode.data.dir 参数。在典型的安装配置中,一般都会配置多个目录,并且把这些目录分别配置到不同的设备上,比如分别配置到不同的HDD(HDD的全称是Hard Disk Drive)和SSD(全称Solid State Drives,就是我们熟悉的固态硬盘)上。

当我们往 HDFS 上写入新的数据块,DataNode 将会使用 volume 选择策略来为这个块选择存储的地方。通过参数 dfs.datanode.fsdataset.volume.choosing.policy 来设置,这个参数目前支持两种磁盘选择策略

  • round-robin
  • available space

dfs.datanode.fsdataset.volume.choosing.policy 参数的默认值是 org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy。这两种磁盘选择策略都是对 org.apache.hadoop.hdfs.server.datanode.fsdataset.VolumeChoosingPolicy接口进行实现,VolumeChoosingPolicy 接口其实就定义了一个函数:chooseVolume 如下:

package org.apache.hadoop.hdfs.server.datanode.fsdataset;

 

import java.io.IOException;

import java.util.List;

 

import org.apache.hadoop.classification.InterfaceAudience;

 

/**

 * This interface specifies the policy for choosing volumes to store replicas.

 */

@InterfaceAudience.Private

public interface VolumeChoosingPolicy<V extends FsVolumeSpi> {

 

  /**

   * Choose a volume to place a replica,

   * given a list of volumes and the replica size sought for storage.

   *

   * The implementations of this interface must be thread-safe.

   *

   * @param volumes - a list of available volumes.

   * @param replicaSize - the size of the replica for which a volume is sought.

   * @return the chosen volume.

   * @throws IOException when disks are unavailable or are full.

   */

  public V chooseVolume(List<V> volumes, long replicaSize) throws IOException;

}

chooseVolume 函数对指定的副本从 volumes 里面选定满足条件的磁盘。下面对 Hadoop</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值