2012-05-16 29 views
1

首先,感谢您阅读我的问题!Hadoop块管理

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

中期结果: 在研究了Hadoop的包之后,我来找到包“org.apache.hadoop.hdfs.server.blockmanagement”。在这里我找到了像BlockManager.java这样的几个类。但我已陷入死胡同。

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

我真的很感谢你帮助我的时间,我感谢你!

回答

0

还有的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) 

在这里,您将需要跟踪pendingReplicationsneededReplications实例变量

+0

谢谢你的时间回答我的问题。我会着眼于它。 :d –