zoukankan      html  css  js  c++  java
  • 查找某个文件在HDFS集群中的位置

         通过"FileSystem.getFileBlockLocation(FileStatus file,long start,long len)"可查找指定文件在HDFS集群上的位置,其中file为文件的完整路径,start和len来标识查找文件的路径。

    以下是java代码的实现:

    package com.njupt.hadoop;


    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.BlockLocation;
    import org.apache.hadoop.fs.FileStatus;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    import org.apache.hadoop.hdfs.DistributedFileSystem;
    import org.apache.hadoop.hdfs.protocol.DatanodeInfo;


    public class FindFileOnHDFS {


    public static void main(String[] args) throws Exception{
    getHDFSNodes();
    getFileLocal();
    }


    public static void getFileLocal() throws Exception {


    Configuration conf = new Configuration();
    FileSystem hdfs = FileSystem.get(conf);
    Path fpath = new Path("/user/root/20120722/word.txt");

    FileStatus fileStatus = hdfs.getFileStatus(fpath);
       BlockLocation[] blkLocations = hdfs.getFileBlockLocations(fileStatus, 0, fileStatus.getLen());

       int blockLen = blkLocations.length;
       
       for(int i = 0 ; i < blockLen ; ++i ){
       String[] hosts = blkLocations[i].getHosts();
       System.out.println("block_"+i + "_location:" + hosts[i]);
       }
    }


    public static void getHDFSNodes() throws Exception{
    Configuration conf = new Configuration();
    FileSystem fs = FileSystem.get(conf);
    DistributedFileSystem hdfs = (DistributedFileSystem)fs;
    DatanodeInfo[] dataNodeStats = hdfs.getDataNodeStats();

    for( int i = 0 ; i < dataNodeStats.length ; ++i ){
    System.out.println("DataNode_" + i + "_Node:" + dataNodeStats[i].getHostName());
    }
    }
    }

  • 相关阅读:
    9011,9012,9013,9014,8050,8550三极管的区别
    XP制动关机CMD命令
    搭建系统框架发现的三个Web.Config问题
    监听公众号返回按钮,直接退出到公众号页面
    微信公众号h5页面自定义分享
    博客园页面设置
    js 中加减乘除 比较精确的算法,js本身有些运算会出错,这里给出较精确的算法
    HTML属性
    HTML属性
    处理ajax数据;数据渲染(细节)
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3060015.html
Copyright © 2011-2022 走看看