public class BlockPlacementPolicyWithNodeGroup
extends org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
Modifier | Constructor and Description |
---|---|
protected |
BlockPlacementPolicyWithNodeGroup() |
Modifier and Type | Method and Description |
---|---|
protected int |
addToExcludedNodes(org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor chosenNode,
Set<org.apache.hadoop.net.Node> excludedNodes)
Find other nodes in the same nodegroup of localMachine and add them
into excludeNodes as replica should not be duplicated for nodes
within the same nodegroup
|
protected void |
chooseFavouredNodes(String src,
int numOfReplicas,
List<org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor> favoredNodes,
Set<org.apache.hadoop.net.Node> favoriteAndExcludedNodes,
long blocksize,
int maxNodesPerRack,
List<DatanodeStorageInfo> results,
boolean avoidStaleNodes,
EnumMap<org.apache.hadoop.fs.StorageType,Integer> storageTypes)
choose all good favored nodes as target.
|
protected DatanodeStorageInfo |
chooseLocalRack(org.apache.hadoop.net.Node localMachine,
Set<org.apache.hadoop.net.Node> excludedNodes,
long blocksize,
int maxNodesPerRack,
List<DatanodeStorageInfo> results,
boolean avoidStaleNodes,
EnumMap<org.apache.hadoop.fs.StorageType,Integer> storageTypes)
Choose one node from the rack that localMachine is on.
|
protected DatanodeStorageInfo |
chooseLocalStorage(org.apache.hadoop.net.Node localMachine,
Set<org.apache.hadoop.net.Node> excludedNodes,
long blocksize,
int maxNodesPerRack,
List<DatanodeStorageInfo> results,
boolean avoidStaleNodes,
EnumMap<org.apache.hadoop.fs.StorageType,Integer> storageTypes,
boolean fallbackToNodeGroupAndLocalRack)
choose local node of localMachine as the target.
|
protected void |
chooseRemoteRack(int numOfReplicas,
org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor localMachine,
Set<org.apache.hadoop.net.Node> excludedNodes,
long blocksize,
int maxReplicasPerRack,
List<DatanodeStorageInfo> results,
boolean avoidStaleNodes,
EnumMap<org.apache.hadoop.fs.StorageType,Integer> storageTypes)
Choose numOfReplicas nodes from the racks
that localMachine is NOT on.
|
protected String |
getRack(org.apache.hadoop.hdfs.protocol.DatanodeInfo cur)
Get rack string from a data node
|
void |
initialize(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hdfs.server.blockmanagement.FSClusterStats stats,
org.apache.hadoop.net.NetworkTopology clusterMap,
org.apache.hadoop.hdfs.server.blockmanagement.Host2NodesMap host2datanodeMap)
Used to setup a BlockPlacementPolicy object.
|
boolean |
isMovable(Collection<org.apache.hadoop.hdfs.protocol.DatanodeInfo> locs,
org.apache.hadoop.hdfs.protocol.DatanodeInfo source,
org.apache.hadoop.hdfs.protocol.DatanodeInfo target)
Check if there are any replica (other than source) on the same node group
with target.
|
Collection<DatanodeStorageInfo> |
pickupReplicaSet(Collection<DatanodeStorageInfo> first,
Collection<DatanodeStorageInfo> second,
Map<String,List<DatanodeStorageInfo>> rackMap)
Pick up replica node set for deleting replica as over-replicated.
|
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementStatus |
verifyBlockPlacement(org.apache.hadoop.hdfs.protocol.DatanodeInfo[] locs,
int numberOfReplicas)
Verify if the block's placement meets requirement of placement policy,
i.e.
|
chooseDataNode, chooseLocalStorage, chooseRandom, chooseRandom, chooseReplicasToDelete, chooseReplicaToDelete, chooseTarget, chooseTargetInOrder, getMaxNodesPerRack
public void initialize(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.hdfs.server.blockmanagement.FSClusterStats stats, org.apache.hadoop.net.NetworkTopology clusterMap, org.apache.hadoop.hdfs.server.blockmanagement.Host2NodesMap host2datanodeMap)
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy
initialize
in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
conf
- the configuration objectstats
- retrieve cluster status from hereclusterMap
- cluster topologyprotected void chooseFavouredNodes(String src, int numOfReplicas, List<org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor> favoredNodes, Set<org.apache.hadoop.net.Node> favoriteAndExcludedNodes, long blocksize, int maxNodesPerRack, List<DatanodeStorageInfo> results, boolean avoidStaleNodes, EnumMap<org.apache.hadoop.fs.StorageType,Integer> storageTypes) throws org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasException
chooseFavouredNodes
in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
NotEnoughReplicasException
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasException
protected DatanodeStorageInfo chooseLocalStorage(org.apache.hadoop.net.Node localMachine, Set<org.apache.hadoop.net.Node> excludedNodes, long blocksize, int maxNodesPerRack, List<DatanodeStorageInfo> results, boolean avoidStaleNodes, EnumMap<org.apache.hadoop.fs.StorageType,Integer> storageTypes, boolean fallbackToNodeGroupAndLocalRack) throws org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasException
chooseLocalStorage
in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasException
protected DatanodeStorageInfo chooseLocalRack(org.apache.hadoop.net.Node localMachine, Set<org.apache.hadoop.net.Node> excludedNodes, long blocksize, int maxNodesPerRack, List<DatanodeStorageInfo> results, boolean avoidStaleNodes, EnumMap<org.apache.hadoop.fs.StorageType,Integer> storageTypes) throws org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasException
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
chooseLocalRack
in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasException
protected void chooseRemoteRack(int numOfReplicas, org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor localMachine, Set<org.apache.hadoop.net.Node> excludedNodes, long blocksize, int maxReplicasPerRack, List<DatanodeStorageInfo> results, boolean avoidStaleNodes, EnumMap<org.apache.hadoop.fs.StorageType,Integer> storageTypes) throws org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasException
chooseRemoteRack
in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasException
protected String getRack(org.apache.hadoop.hdfs.protocol.DatanodeInfo cur)
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy
getRack
in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy
protected int addToExcludedNodes(org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor chosenNode, Set<org.apache.hadoop.net.Node> excludedNodes)
addToExcludedNodes
in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
public Collection<DatanodeStorageInfo> pickupReplicaSet(Collection<DatanodeStorageInfo> first, Collection<DatanodeStorageInfo> second, Map<String,List<DatanodeStorageInfo>> rackMap)
pickupReplicaSet
in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
public boolean isMovable(Collection<org.apache.hadoop.hdfs.protocol.DatanodeInfo> locs, org.apache.hadoop.hdfs.protocol.DatanodeInfo source, org.apache.hadoop.hdfs.protocol.DatanodeInfo target)
isMovable
in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
locs
- all replicas including source and targetsource
- source replica of the movetarget
- target replica of the movepublic org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementStatus verifyBlockPlacement(org.apache.hadoop.hdfs.protocol.DatanodeInfo[] locs, int numberOfReplicas)
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy
verifyBlockPlacement
in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
locs
- block with locationsnumberOfReplicas
- replica number of file to be verifiedCopyright © 2017 Apache Software Foundation. All Rights Reserved.