`
beat_it_
  • 浏览: 64059 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java操作FileSystem的简单应用

阅读更多

  看着书写了下通过java操作filesystem api对hdfs操作的简单操作,贴下代码:

package com.lyq.study.api;

import java.io.IOException;
import org.apache.hadoop.fs.BlockLocation;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.DistributedFileSystem;
import org.apache.hadoop.hdfs.protocol.DatanodeInfo;


import com.lyq.study.util.HBaseConfigUtils;

public class HDFS_API {
	
	//上传文件到hdfs上
	public static void copyFile() throws IOException {
		FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0));
		Path src = new Path("D:\\data.txt");
		Path dst = new Path("/test/input");
		hdfs.copyFromLocalFile(src, dst);
		System.out.println("===========");
		FileStatus files[] = hdfs.listStatus(dst);
		for(FileStatus file:files){
			System.out.println(file.getPath());
		}
	}
	
	//创建hdfs文件
	public static void createFile() throws IOException {
		byte[] buff = "hello world hadoop study hbase study hello world study hadoop hbase".getBytes();
		FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0));
		Path dst = new Path("/test/input/test.txt");
		FSDataOutputStream outputStream = hdfs.create(dst);
		outputStream.write(buff, 0, buff.length);
	}
	
	//重命名hdfs文件
	public static void renameFile() throws IOException {
		FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0));
		Path frpath = new Path("/test/input/test.txt");
		Path topath = new Path("/test/input/test1.txt");
		boolean rename = hdfs.rename(frpath, topath);
		System.out.println("rename ? "+rename);
	}
	
	//删除hdfs文件
	public static void deleteFile() throws IOException {
		FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0));
		Path delpath = new Path("/test/input/test1.txt");
		boolean isdelete = hdfs.delete(delpath,false);
//		Boolean isdelete = hdfs.delete(delpath,true);//递归删除
		System.out.println("isdelete ? "+isdelete);
	}
	
	//查看hdfs文件最好修改时间
	public static void getLTime() throws IOException {
		FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0));
		Path fpath = new Path("/test/input/a.txt");
		FileStatus filestatus = hdfs.getFileStatus(fpath);
		long modificationTime = filestatus.getModificationTime();
		System.out.println("Modifycation time is: "+modificationTime);
	}
	
	//查看hdfs文件是否存在
	public static void checkFile() throws IOException {
		FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0));
		Path fpath = new Path("/test/input/a.txt");
		boolean isExists = hdfs.exists(fpath);
		System.out.println("Exist ? "+isExists);
	}
	
	//查看hdfs文件在集群上的位置
	public static void fileLoc() throws IOException {
		FileSystem hdfs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0));
		Path fpath = new Path("/test/input/a.txt");
		FileStatus filestatus = hdfs.getFileStatus(fpath);
		BlockLocation[] blkLocations = hdfs.getFileBlockLocations(filestatus, 0, filestatus.getLen());
		int blockLen = blkLocations.length;
		for(int i=0;i<blockLen;i++){
			String[] hosts = blkLocations[i].getHosts();
			System.out.println("block"+i+"location: "+hosts[i]);
		}
	}
	
	//获取hdfs集群上所以节点
	public static void getList() throws IOException {
		FileSystem fs = FileSystem.get(HBaseConfigUtils.getHBaseConfig(0));
		DistributedFileSystem hdfs = (DistributedFileSystem) fs; 
		DatanodeInfo[] dataNodeStats = hdfs.getDataNodeStats();
		String[] names = new String[dataNodeStats.length];
		for(int i=0;i<dataNodeStats.length;i++){
			names[i] = dataNodeStats[i].getHostName();
			System.out.println("node"+i+"name: "+names[i]);
		}
	}
	
	public static void main(String[] args) throws IOException {
		copyFile();
//		createFile();
//		renameFile();
//		deleteFile();
//		getLTime();
//		checkFile();
//		fileLoc();
//		getList();
	}
}

package com.lyq.study.util;
import org.apache.hadoop.conf.Configuration;
 
public class HBaseConfigUtils {
 /**
  * 获取HBaseConfiguration
  * @param flag 
  *    集群标识:0,单机;1集群
  * @return
  */
 public static Configuration getHBaseConfig(int flag){
  Configuration conf = new Configuration();
  if(flag > 0){
   //集群
   conf.set("fs.defaultFS", "hdfs://master129:9000/");
   conf.set("mapreduce.framework.name", "local");
   conf.set("mapred.job.tracker", "master129:9001");
   conf.set("hbase.zookeeper.quorum", "master129,slave130,slave131,slave132");
  }else{
   //单机
   conf.set("fs.defaultFS", "hdfs://ubuntu:9000/");
   conf.set("mapreduce.framework.name", "local");
   conf.set("mapred.job.tracker", "ubuntu:9001");
   conf.set("hbase.zookeeper.quorum", "ubuntu");
  }
  
  return conf;
 }
 
}
0
0
分享到:
评论

相关推荐

    大数据技术基础实验报告-调用Java API实现HDFS操作.doc

    在实际编程中,我们通常会创建一个Java类,导入Hadoop的相关库,然后使用FileSystem类和Path类等来执行HDFS操作。例如,使用`FileSystem.get(conf)`获取FileSystem实例,其中conf是包含HDFS配置信息的Configuration...

    FileSystem:一个用java写的简单的文件系统模拟器

    而“FileSystem”是一个用Java语言编写的简单文件系统模拟器,旨在帮助用户理解和探索操作系统中的符号链接和硬链接等概念。 Java作为一种跨平台、面向对象的编程语言,因其丰富的类库和高效性能,常常被用于开发...

    一个简单的文件管理系统,提供了基于命令行的简单命令操作(Java企业级应用第一次实验)

    这个项目是一个基于Java实现的简单文件管理系统,设计用于企业级应用的初步实践。它通过命令行界面提供了一系列基本的文件管理操作,使用户能够执行如列出目录、改变当前工作目录、创建新目录以及复制文件等任务。...

    filesystem-master_java_springdatajpa_springboot_hibernate_文件服务器_

    Spring Data JPA提供了一种声明式的方式,通过简单的方法签名就能实现对数据库的CRUD(创建、读取、更新、删除)操作,减少了编写大量的SQL代码的需要。 **Spring Boot** Spring Boot是Spring框架的一个扩展,用于...

    java操作Hadoop源码之HDFS Java API操作-上传文件

    总之,通过Hadoop的HDFS Java API,我们可以方便地在Java应用中与HDFS进行集成,实现文件的上传、下载等操作。理解并熟练掌握这些API,对于开发分布式应用,尤其是在大数据处理场景中,是至关重要的。在实际项目中,...

    用java写的简单文件系统

    在这个简单的Java文件系统中,我们可以预期它会包含对文件和目录的基本操作,如读、写、创建、删除等。 3. **类设计** - **File类**:代表单个文件,可能包含读取、写入、重命名、删除等方法。 - **Directory类**...

    java操作Hbase之从Hbase中读取数据写入hdfs中源码

    在Java编程环境中,操作HBase并将其数据写入HDFS(Hadoop Distributed File System)是一项常见的任务,特别是在大数据处理和分析的场景下。本篇将详细介绍如何使用Java API实现这一功能,以及涉及到的关键技术和...

    java实现,简单文件监控

    在Java编程语言中,实现对本地文件的简单监控是一项实用的技术,这可以帮助开发者在文件系统中检测到诸如移动、复制和粘贴等操作。本文将深入探讨如何利用Java的文件I/O API和事件监听机制来达成这个目标。 首先,...

    Java写的简单文件目录监控程序

    标题 "Java写的简单文件目录监控程序" 涉及到的是使用Java编程语言实现一个能够监控文件目录变化的工具。这种程序通常用于自动化任务,比如当文件或目录发生变化时自动执行某些操作,如备份、同步或者日志记录。在...

    java 操作word文档

    ### Java操作Word文档知识点 #### 一、Java操作Word文档概述 在现代办公环境中,Word文档是最常用的文档格式之一。由于其广泛的应用场景,很多时候我们需要通过编程的方式对Word文档进行读写操作。Java作为一种强大...

    filesystem-master.zip

    【filesystem-master.zip】是一个压缩包,包含了某个博主分享的学习资源,主要是关于SpringBoot应用中文件上传和文件管理系统的基础实现。这个项目旨在提供一个基础框架,让学习者可以通过它来理解和实践如何在...

    HDFS Java api 简单程序.zip

    通过这些基本操作,你可以使用HDFS Java API构建复杂的数据处理和分析应用。在实际项目中,还需要考虑错误处理、资源释放和性能优化等细节。记住,正确关闭流和文件系统连接是避免资源泄漏的关键。 在学习和实践中...

    JAVA文件操作大全

    通过学习并掌握以上知识点,开发者可以有效地在Java应用程序中执行各种文件操作,无论是简单的文本文件处理还是复杂的文件系统操作,都能游刃有余。实践中,结合具体需求,灵活运用这些工具和技巧,将使你的代码更加...

    4、HDFS-java操作类HDFSUtil及junit测试(HDFS的常见操作以及HA环境的配置)

    以上就是关于HDFSJava操作类HDFSUtil以及JUnit测试的主要内容,它涵盖了HDFS的基础操作和高可用环境的配置,对于在Java应用中集成HDFS操作非常实用。在实际项目中,还需要根据具体需求进行调整和扩展,例如添加数据...

    java 19下载,版本 19.0.1, macos各版本

    - **文件系统链接(FileSystem Links)**:允许Java程序创建软链接和硬链接,类似于Unix系统中的操作,方便在文件系统中进行操作。 - **增强的JShell(JShell增强)**:Java内置的REPL(Read-Eval-Print Loop)...

    java 源码.rarjava 源码.rar

    在给定的“java 源码.rar”压缩包中,包含了几个核心的Java源代码文件,它们分别展示了基础的文件操作、简单的文本编辑器实现以及对CMD命令行的模拟。接下来,我们将深入探讨这些知识点。 1. **基础文件操作**: ...

    JAVA 1.7 API官方文档中文版

    `java.nio.file`包提供了新的API,如`Files`, `Paths`, 和`FileSystem`,使得文件操作更加灵活且易于使用。 2. **类型推断(Type Inference for Generic Instance Creation)**: 使用`&lt;&gt;`操作符,开发者可以在创建...

    详细简单的hdfs java的api接口实现

    本篇文章将深入讲解如何使用HDFS Java API进行文件的上传、下载、查看以及集群环境的相关操作。 首先,我们要了解HDFS API的基本概念。HDFS API是Hadoop的核心组件之一,它提供了一组Java类和接口,允许用户在HDFS...

    Pro Java 7 NIO2

    通过学习这本书,读者可以深入了解如何在Java应用程序中高效地进行文件I/O操作。 #### 二、Path类概述 Path类是NIO.2中最常用的类之一,它为文件系统路径的操作提供了一种高级抽象。Path对象表示一个特定于文件...

    HDFS存取实例(java)

    以下是一个简单的Java代码示例,展示如何上传和下载文件至HDFS: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; public ...

Global site tag (gtag.js) - Google Analytics