我在每个4个处理器的16个VM上运行Hadoop设置。
主输入文件分为小块(InputSlit)并分发到不同的计算机。
现在,我如何找到输入的哪个部分及其副本位于哪台计算机上?
有什么命令吗?
我在互联网上找不到很多信息。
提前致谢
帕万·库玛·阿鲁里
最佳答案
您可以使用以下代码来计算计算机上的数据分布:
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());
}