hdfs-JAVA-API(三)

2014-11-24 08:14:22 · 作者: · 浏览: 3
e.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]);

}

}

}

  运行结果如图6-10-1和6.10.2所示。

  1)控制台结果

  \

图6-10-1 运行结果(1)

  2)项目浏览器

  \

图6-10-2 运行结果(2)

6.11 获取HDFS集群上所有节点名称信息

  通过"DatanodeInfo.getHostName()"可获取HDFS集群上的所有节点名称。具体实现如下:

package com.hebut.file;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.hdfs.DistributedFileSystem;

import org.apache.hadoop.hdfs.protocol.DatanodeInfo;

public class GetList {

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

Configuration conf=new Configuration();

FileSystem fs=FileSystem.get(conf);

DistributedFileSystem hdfs = (DistributedFileSystem)fs;

DatanodeInfo[] dataNodeStats = hdfs.getDataNodeStats();

for(int i=0;i

System.out.println("DataNode_"+i+"_Name:"+dataNodeStats[i].getHostName());

}

}

}

  运行结果如图6-11-1所示。

  \

图6-11-1 控制台结果