2
Моя цель - установить узел позиции блока реплики HDFS самостоятельно. После взглянуть на код HDFS, я найти дорожку вызова здесь (Hadoop 2,2 версии)Как установить положение блока реплик HDFS самостоятельно?
BlockManager.getDatanodeDescriptors(List<String>) line: 1400
BlockManager.chooseTarget(String, int, DatanodeDescriptor, HashMap<Node,Node>, long, List<String>) line: 1378
FSNamesystem.getAdditionalBlock(String, long, String, ExtendedBlock, HashMap<Node,Node>, List<String>) line: 2477
NameNodeRpcServer.addBlock(String, String, ExtendedBlock, DatanodeInfo[], long, String[]) line: 555
ClientNamenodeProtocolServerSideTranslatorPB.addBlock(RpcController, ClientNamenodeProtocolProtos$AddBlockRequestProto) line: 387
ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(Descriptors$MethodDescriptor, RpcController, Message) line: 59582
ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(RPC$Server, String, Writable, long) line: 585
ProtobufRpcEngine$Server(RPC$Server).call(RPC$RpcKind, String, Writable, long) line: 928
И я нахожу BlockManager.java хава chooseTarget
методы:
public DatanodeDescriptor[] chooseTarget(final String src,
final int numOfReplicas, final DatanodeDescriptor client,
final HashMap<Node, Node> excludedNodes,
final long blocksize, List<String> favoredNodes) throws IOException {
Я думаю, если Я мог бы установить значение List<String> favoredNodes
, тогда моя цель может быть достигнута.