我在16个VM上运行了Hadoop设置,每个4个处理器。 主输入文件分为小块(InputSlit)并分发到不同的机器。 现在我如何找到输入的哪个部分及其副本驻留在哪台机器上? 有命令吗? 我在互联网上找不到太多信息。 提前致谢
Pavan kumar Alluri
答案 0 :(得分:0)
您可以使用此代码计算机器上数据的分布:
Path file = new Path("/path/to/some/file/");
FileSystem fs = file.getFileSystem(getConf());
FileStatus fileStatus = fs.getFileStatus(file);
HDFSBlocksDistribution dist = FSHDFSUtils.computeHDFSBlocksDistribution(fs, fileStatus, 0, fileStatus.getLen());
for (HDFSBlocksDistribution.HostAndWeight value : dist.getHostAndWeights().values()) {
System.out.println(value.getHost() + "\t" + value.getWeight());
}