Java代码拉取HDFS的fsimages

224 阅读1分钟

HDFS的fsimages是hdfs准实时状态镜像文件,里面包含hdfs文件大小等元数据信息,直接拉取该文件分析,比通过hdfs命令或者接口拉取分析hive表文件大小等信息消耗的资源要小很多。

下面是通过java客户端的DFSAdmin拉取HDFS的fsimages文件代码。

public File fetchImage(File dir) throws IOException {
    new DFSAdmin(conf).fetchImage(new String[]{"-fetchImage", dir.getAbsolutePath()}, 1);
    Collection<File> files = FileUtils.listFiles(dir, null, false);
    Preconditions.checkState(!files.isEmpty(), "fsimage dir is empty");
    return files.stream().findFirst().get();
}