package org.apache.hadoop.hdfs.server.namenode;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.net.NetworkTopology;
import org.apache.hadoop.net.Node;
public class BlockPlacementPolicyFakeData extends BlockPlacementPolicyDefault {
public static BlockPlacementPolicyFakeData lastInstance = null;
public DatanodeDescriptor overridingDatanode = null;
public BlockPlacementPolicyFakeData() {
super();
FSNamesystem.LOG.info("new BlockPlacementPolicyFakeData: " + this);
lastInstance = this;
}
public BlockPlacementPolicyFakeData(Configuration conf, FSClusterStats stats,
NetworkTopology clusterMap) {
initialize(conf, stats, clusterMap, null, null, null);
FSNamesystem.LOG.info("new BlockPlacementPolicyFakeData: " + this);
lastInstance = this;
}
DatanodeDescriptor[] chooseTarget(int numOfReplicas,
DatanodeDescriptor writer,
List<DatanodeDescriptor> chosenNodes,
List<Node> exlcNodes,
long blocksize) {
if (overridingDatanode != null) {
FSNamesystem.LOG.info("Block Placement: using override target node " + overridingDatanode.getName());
return new DatanodeDescriptor[] { overridingDatanode };
}
return super.chooseTarget(numOfReplicas, writer, chosenNodes, exlcNodes, blocksize);
}
public static void setNameNodeReplicator(NameNode namenode, BlockPlacementPolicy policy) {
namenode.namesystem.replicator = policy;
}
}