原代码version:2.6.1
什么是volume:卷 , 用途:在hadoop中用于dataNode副本储存,所有dataNode的储存都离不开volume的策略选择,策略的选择可以通过参数dfs.datanode.fsdataset.volume.choosing.policy 参数来设置,参数默认值:org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy
策略选择:目前有round-robin ,available space
上述两种策略均继承: org.apache.hadoop.hdfs.server.datanode.fsdataset.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