【hadoop】使用Java API获取HDFS的元信息

使用Java API获取HDFS的元信息

查找某个文件的数据块在HDFS的DataNode位置

java 复制代码
@Test
public void test1() throws Exception{
	//指定NameNode 地址
	Configuration conf = new Configuration();
	conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
		
	FileSystem client = FileSystem.get(conf);
		
	//得到该文件的状态
	FileStatus status = client.getFileStatus(new Path("/folder1/a.tag.gz"));
		
	//获取该文件的数据块信息
	BlockLocation[] list = client.getFileBlockLocations(status, 0, status.getLen());
	for(BlockLocation blk:list) {
		System.out.println("数据块:主机:" + Arrays.toString(blk.getHosts()));
	}
	
	client.close();
}

查看HDFS的数据节点

java 复制代码
@Test
public void test2() throws Exception{
	//指定NameNode 地址
	Configuration conf = new Configuration();
	conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");
		
	//使用FileSystem的子类
	DistributedFileSystem client = (DistributedFileSystem)FileSystem.get(conf);
		
	//获取所有的数据节点
	DatanodeInfo[] list =client.getDataNodeStats();
	for(DatanodeInfo data:list) {
		System.out.println(data.getHostName());
	}
		
	client.close();
}

删除HDFS数据

java 复制代码
@Test
public void test3() throws Exception{
	//指定NameNode 地址
	Configuration conf = new Configuration();
	conf.set("fs.defaultFS", "hdfs://192.168.157.111:9000");

	FileSystem client = FileSystem.get(conf);
		
	//删除数据
	//第二个参数false:是否使用递归
	boolean flag = client.delete(new Path("/folder1/a.tag.gz"), false);
	System.out.println(flag?"删除成功":"删除失败");
	
	client.close();
}
相关推荐
自由鬼24 分钟前
正向代理服务器Squid:功能、架构、部署与应用深度解析
java·运维·服务器·程序人生·安全·架构·代理
fouryears_234171 小时前
深入拆解Spring核心思想之一:IoC
java·后端·spring
codervibe1 小时前
使用 Spring Boot + JWT 实现多角色登录认证(附完整流程图)
java·后端
坚持学习永不言弃1 小时前
Ehcache、Caffeine、Memcached和Redis缓存
java
阿劲1 小时前
从业务卡顿到数据库连接池耗尽:Spring Boot项目HikariCP超时问题实战排查
java·后端·面试
亮1112 小时前
Maven 编译过程中发生了 Java Heap Space 内存溢出(OutOfMemoryError)
java·开发语言·maven
添乱2 小时前
「Java案例」求PI的值
java
Zhu_S W2 小时前
深入理解Java虚拟机:Java内存区域与内存溢出异常
java·开发语言·jvm
快乐非自愿2 小时前
商品中心—库存分桶高并发的优化文档
java·前端·spring
鸡蛋灌Bean2 小时前
Java常用设计模式大全
java·开发语言·设计模式