【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();
}
相关推荐
5:0040 分钟前
Qt:(创建项目)
java·前端·qt
努力的搬砖人.43 分钟前
Spring Boot 使用 WebMagic 爬虫框架入门
java·spring boot·爬虫
Code哈哈笑1 小时前
【SpringBoot】Spring中事务的实现:声明式事务@Transactional、编程式事务
java·spring boot·后端·spring·mybatis
大鱼天1 小时前
intellij idea最新版git开启Local Changes
java·git·intellij-idea
IT成长日记2 小时前
【Hive入门】Hive性能调优:小文件问题与动态分区合并策略详解
数据仓库·hive·hadoop·动态分区·小文件问题
n33(NK)3 小时前
【算法基础】冒泡排序算法 - JAVA
java·算法·排序算法
小园子的小菜3 小时前
探索 Disruptor:高性能并发框架的奥秘
java
碎梦归途7 小时前
23种设计模式-行为型模式之状态模式(Java版本)
java·jvm·设计模式·状态模式·软考·软件设计师·行为模式
豆沙沙包?8 小时前
2025年- H16-Lc124-169.多数元素(技巧)---java版
java·开发语言
zhangxueyi9 小时前
Java实现基数排序算法
java·数据结构·算法