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, getMaxNodesPerRackpublic 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.BlockPlacementPolicyinitialize in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefaultconf - 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.BlockPlacementPolicyDefaultNotEnoughReplicasExceptionorg.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasExceptionprotected 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.BlockPlacementPolicyDefaultorg.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasExceptionprotected 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.BlockPlacementPolicyDefaultchooseLocalRack in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefaultorg.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasExceptionprotected 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.BlockPlacementPolicyDefaultorg.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy.NotEnoughReplicasExceptionprotected String getRack(org.apache.hadoop.hdfs.protocol.DatanodeInfo cur)
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicygetRack in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyprotected 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.BlockPlacementPolicyDefaultpublic Collection<DatanodeStorageInfo> pickupReplicaSet(Collection<DatanodeStorageInfo> first, Collection<DatanodeStorageInfo> second, Map<String,List<DatanodeStorageInfo>> rackMap)
pickupReplicaSet in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefaultpublic 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.BlockPlacementPolicyDefaultlocs - 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.BlockPlacementPolicyverifyBlockPlacement in class org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefaultlocs - block with locationsnumberOfReplicas - replica number of file to be verifiedCopyright © 2017 Apache Software Foundation. All Rights Reserved.