HDFS的Java客户端操作代码(查看HDFS下所有的文件存储位置信息)

时间:2023-03-09 04:58:05
HDFS的Java客户端操作代码(查看HDFS下所有的文件存储位置信息)

1.查看HDFS下所有的文件存储位置信息

 package Hdfs;

 import java.net.URI;
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 LocationFile {
public static void main(String[] args) throws Exception {
String uri = "hdfs://neusoft-master:9000/user/root/test/demo1";
Configuration conf = new Configuration();
try {
FileSystem fs = FileSystem.get(URI.create(uri), conf);
Path fpath = new Path(uri);
FileStatus fileStatus = fs.getFileStatus(fpath);
BlockLocation[] blockLocations = fs.getFileBlockLocations(
fileStatus, 0, fileStatus.getLen());
int blocklen = blockLocations.length;
for (int i = 0; i < blocklen; i++) {
String[] hosts = blockLocations[i].getHosts();
System.out.println("block_" +i+ "_location:" + hosts[0]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

HDFS下所有文件存储位置

2.提交jar包,并分析运行结果

HDFS的Java客户端操作代码(查看HDFS下所有的文件存储位置信息)

3.这里的显示结果:

block_0_location:neusoft-master

分别为:块号:主机名,因为HDFS的文件是由Data块完成的,Hadoop中得block块一般64M

Hadoop2中block块为128M。(单独分析block块)