還有的HDFS架構指南中的高級概述:
至於跟蹤源,所述的NameNode將指示數據管理部一個一個塊轉移到其它的DataNodes。
org.apache.hadoop.hdfs.server.datanode.DataNode.processCommand(DatanodeCommand[])
-> org.apache.hadoop.hdfs.server.datanode.DataNode.processCommand(DatanodeCommand)
See the DatanodeProtocol.DNA_TRANSFER command type in the switch
-> org.apache.hadoop.hdfs.server.datanode.DataNode.transferBlocks(Block[], DatanodeInfo[][])
-> org.apache.hadoop.hdfs.server.datanode.DataNode.transferBlock(Block, DatanodeInfo[])
您可以在NameNode會被髮布的命令反向工作:你可以在下面的方法跟蹤中數據管理部源此命令
org.apache.hadoop.hdfs.server.namenode.DatanodeDescriptor.getReplicationCommand(int)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.handleHeartbeat(DatanodeRegistration, long, long, long, int, int)
在這裏,您將需要跟蹤pendingReplications
和neededReplications
實例變量
謝謝你的時間回答我的問題。我會着眼於它。 :d –