1

我是 Hadoop 的初学者(我已经学习了几个教程)。我目前正在研究 Hadoop 中的底层复制模型。我想知道模型的外观以及在哪里可以找到代码。

中期成果:研究了Hadoop的包后,我找到了包“org.apache.hadoop.hdfs.server.blockmanagement”。在这里我找到了几个类,比如 BlockManager.java。但是我已经走到了死胡同。

你能给我任何网站/书籍的参考,我可以在其中找到 Hadoop 中的底层复制模型。有没有?如果没有,你有什么建议?

4

1 回答 1

0

HDFS 架构指南中有一个高级概述:

至于溯源,NameNode会指示一个DataNode将一个block传输给其他DataNode。您可以通过以下方法在 DataNode 源中跟踪此命令:

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)

从这里你需要跟踪pendingReplicationsneededReplications实例变量

于 2012-05-16T10:39:12.677 回答