我是 Hadoop 的初学者(我已经学习了几个教程)。我目前正在研究 Hadoop 中的底层复制模型。我想知道模型的外观以及在哪里可以找到代码。
中期成果:研究了Hadoop的包后,我找到了包“org.apache.hadoop.hdfs.server.blockmanagement”。在这里我找到了几个类,比如 BlockManager.java。但是我已经走到了死胡同。
你能给我任何网站/书籍的参考,我可以在其中找到 Hadoop 中的底层复制模型。有没有?如果没有,你有什么建议?
我是 Hadoop 的初学者(我已经学习了几个教程)。我目前正在研究 Hadoop 中的底层复制模型。我想知道模型的外观以及在哪里可以找到代码。
中期成果:研究了Hadoop的包后,我找到了包“org.apache.hadoop.hdfs.server.blockmanagement”。在这里我找到了几个类,比如 BlockManager.java。但是我已经走到了死胡同。
你能给我任何网站/书籍的参考,我可以在其中找到 Hadoop 中的底层复制模型。有没有?如果没有,你有什么建议?
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)
从这里你需要跟踪pendingReplications
和neededReplications
实例变量