现在的位置: 首页 > 综合 > 正文

查找某个文件在HDFS集群的位置

2013年01月17日 ⁄ 综合 ⁄ 共 806字 ⁄ 字号 评论关闭

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

package
com.hebut.file;

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;

public
class
FileLoc {

public
static
void
main(String[] args) throws
Exception {

Configuration conf=new
Configuration();

FileSystem hdfs=FileSystem.get(conf);

Path fpath=new
Path("/user/hadoop/cygwin");

FileStatus filestatus = hdfs.getFileStatus(fpath);

BlockLocation[] blkLocations = hdfs.getFileBlockLocations(filestatus,
0, filestatus.getLen());

int
blockLen = blkLocations.length;

for(int
i=0;i

String[] hosts = blkLocations[i].getHosts();

System.out.println("block_"+i+"_location:"+hosts[0]);

}

}

}

抱歉!评论已关闭.