我在每个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());
    }

10-06 07:24