【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();
}
相关推荐
皮皮林5518 小时前
使用 Java + WebSocket 实现简单实时双人协同 pk 答题
java·websocket
码小凡10 小时前
优雅!用了这两款插件,我成了整个公司代码写得最规范的码农
java·后端
掉鱼的猫12 小时前
Solon AI 五步构建 RAG 服务:2025 最新 AI + 向量数据库实战
java·redis·后端
java金融12 小时前
FactoryBean 和BeanFactory的傻傻的总是分不清?
java·后端
独立开阀者_FwtCoder12 小时前
Nginx 通过匹配 Cookie 将请求定向到特定服务器
java·vue.js·后端
名曰大神12 小时前
AEM6.5集成Redis详细步骤(附代码)
java·redis·demo·aem
带刺的坐椅12 小时前
Solon AI 五步构建 RAG 服务:2025 最新 AI + 向量数据库实战
java·redis·ai·solon·rag
东阳马生架构13 小时前
商品中心—7.自研缓存框架的技术文档
java
晴空月明15 小时前
线程安全与锁机制深度解析
java
天天摸鱼的java工程师17 小时前
你如何处理一个高并发接口的线程安全问题?说说你做过的优化措施
java·后端