Hadoop block 管理

标签 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)

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

关于Hadoop block 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614762/

相关文章:

hadoop - Hadoop上的提取失败太多

hadoop - 如何使用 kafka-connect-hdfs 将数据从 kafka avro 控制台流式传输到 HDFS?

Hadoop Datanode 配置核心和 RAM

amazon-web-services - 无法在 Web 浏览器上使用 AWS 公共(public) DNS 打开 cloudera manager 7180 端口

hadoop - 在 Apache Hadoop 中的 Datanode 内重新平衡磁盘

amazon-web-services - 避免使用 hadoop (EMR) 在 S3 中创建 _$folder$ 键

hadoop - 如何指定 Hadoop MapReduce 作业生成的目录的权限?

linux - HADOOP_HOME 如何引用 hadoop 命令

java - 带有.a​​ddCacheFile的Hadoop Mapreduce CompileError(使用外部Jar)

hadoop - 安装并使用hipi来分析一下