`

HDFS FileSystem常用方法

 
阅读更多

 

  

工程所依赖的jar包, hadoop-1.1.2/*.jar、hadoop-1.1.2/lib/*.jar

 

 编写Java程序通过URL访问HDFS

public class HDFSTest {
	public static final String HDFSPATH ="hdfs://centos:9000/hello.txt";
	@Test
	public void testAcceHDFSForURL() throws IOException{
		URL url = new URL(HDFSPATH);
		InputStream inputStream = url.openStream();
		IOUtils.copyBytes(inputStream, System.out, 1024, true);
	}
}
java.net.MalformedURLException: unknown protocol: hdfs

 只是这样访问,程序会有异常,畸形的URL,就是不能解析HDFS这种协议,使用setURLStreamHandlerFactory()让URL能够识别hdfs协议

public class HDFSTest {
	//URL如果不是用IP地址,使用主机名,需要在hosts文件中配置主机名到IPd地址的映射
	public static final String HDFSPATH ="hdfs://192.168.56.101:9000/hello.txt";
	@Test
	public void testAcceHDFSForURL() throws IOException{
		URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());
		URL url = new URL(HDFSPATH);
		InputStream inputStream = url.openStream();
		/**
			InputStream:输入流			OutputStream:输出流			int:缓冲区大小			boolean:传输结束后是否关闭流
		**/
		IOUtils.copyBytes(inputStream, System.out, 1024, true);
	}
}

 

使用HDFS提供的接口访问HDFS,功能更加强大,操作类FileSystem

删除HDFS中的所有文件、目录

[root@centos Downloads]# hadoop fs -rmr hdfs://centos:9000/*
Warning: $HADOOP_HOME is deprecated.
Deleted hdfs://centos:9000/file1
Deleted hdfs://centos:9000/hello.txt
Deleted hdfs://centos:9000/usr

[root@centos Downloads]# hadoop fs -lsr /
Warning: $HADOOP_HOME is deprecated.
[root@centos Downloads]# hadoop fs -lsr /
Warning: $HADOOP_HOME is deprecated.
 
创建一个名为file1的目录
        public static final String HDFSURIPATH ="hdfs://192.168.56.101:9000/";
	@Test
	public void testFileSystemForUploadFile() throws IOException, URISyntaxException{
		FileSystem fileSystem = getFileSystem();
		fileSystem.mkdirs(new Path("/file1"));
	}

	private FileSystem getFileSystem() throws IOException, URISyntaxException {
		//Configuration对象加载配置文件
		FileSystem fileSystem = FileSystem.get(new URI(HDFSURIPATH), new Configuration());
		return fileSystem;
	}

 通过命令查看文件创建成功

[root@centos Downloads]# hadoop fs -lsr /
Warning: $HADOOP_HOME is deprecated.
drwxr-xr-x   - Administrator supergroup          0 2015-05-22 03:49 /file1

 

删除目录

	@Test
	public void testFileSystemForDelete() throws IOException, URISyntaxException{
		FileSystem fileSystem = getFileSystem();
		fileSystem.delete(new Path("/file1"),true);
	}

 命令查看

[root@centos Downloads]# hadoop fs -lsr /
Warning: $HADOOP_HOME is deprecated.

 

上传文件

	@Test
	public void testFileSystemForCreate() throws IOException, URISyntaxException{
		//创建一个名称为file1的目录
		testFileSystemForMkdir();
		//创建一个文件
		FSDataOutputStream fsOutputStream = getFileSystem().create(new Path("/file1/hello.txt"));
		//获取本地文件
		FileInputStream fInputStrea = new FileInputStream("E:/Linux/Linux.txt");
		//把本地文件E:/Linux/Linux.txt中的内容拷贝到hdfs中/file/hello.txt文件中
		IOUtils.copyBytes(fInputStrea, fsOutputStream, 1024, true);
	}

另一种上传文件的方式

FileSystem fs = HDFSUtils.getFileSystem();
Path s = new Path("E:/Linux/201207141451233056.png");
Path d = new Path("/file1/");
fs.copyFromLocalFile(s, d); 

命令查看

[root@centos Downloads]# hadoop fs -lsr /
Warning: $HADOOP_HOME is deprecated.
drwxr-xr-x   - Administrator supergroup          0 2015-05-22 04:14 /file1
-rw-r--r--   3 Administrator supergroup       4617 2015-05-22 04:14 /file1/hello.txt

 

读取文件,中文内容会有乱码

	@Test
	public void testFileSystemForOpen() throws IOException, URISyntaxException{
		 FSDataInputStream fsInputStream = getFileSystem().open(new Path("/file1/hello.txt"));
		IOUtils.copyBytes(fsInputStream, System.out, 1024, true);
	}

 

查看目录及文件

	@Test
	public void testFileSystemForListStatus() throws IOException, URISyntaxException{
		 FileStatus[] listStatus = getFileSystem().listStatus(new Path("/file1"));
		for (FileStatus fs : listStatus) {
			System.out.println(fs.getLen());
			System.out.println(fs.isDir());
			System.out.println(fs.getPath());
			System.out.println(fs.getPermission());
			System.out.println(fs.getReplication());
		}
	}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    数据存储实验2-熟悉常用的HDFS操作.doc(实验报告)

    * FileSystem:用于访问HDFS文件系统的接口 * Path:用于表示HDFS文件路径的接口 * FSDataInputStream:用于读取HDFS文件的接口 * FSDataOutputStream:用于写入HDFS文件的接口 实验代码 实验代码包括: * HDFSApi:...

    实验二:熟悉常用的HDFS操作

    实验二:“熟悉常用的HDFS操作”旨在帮助学习者深入理解Hadoop分布式文件系统(HDFS)在大数据处理中的核心地位,以及如何通过Shell命令和Java API进行高效操作。HDFS在Hadoop架构中扮演着存储大数据的核心角色,为...

    大数据实验二-HDFS编程实践

    2. **Shell命令的掌握**:熟练掌握了HDFS常用Shell命令后,可以在日常运维或数据处理过程中快速高效地执行任务。 3. **Java API的应用**:Java API提供了更高级的功能支持,如并发处理、错误恢复等,对于开发高性能...

    大数据实验2:熟悉常用的 HDFS 操作 答案

    HDFS 操作详解 大数据实验 2:熟悉常用的 HDFS 操作答案旨在帮助用户熟悉 HDFS 在 Hadoop 体系结构中的角色,并掌握...通过实验,用户可以更好地理解 HDFS 的工作原理和使用方法,从而更好地应用于大数据处理和分析。

    数据科学导论实验报告 实验2:熟悉常用的HDFS操作

    1. **上传文件**:在Java代码中,我们可以使用`FileSystem`类的`copyFromLocalFile`方法将本地文件上传到HDFS。这个方法接受两个布尔参数,第一个表示是否删除源文件,第二个表示是否覆盖目标文件。如果目标文件已...

    HadoopFileSystem简介

    HadoopFileSystem,也就是HDFS(Hadoop Distributed File System),是Hadoop项目中的一个子项目,它是一个高度容错的系统,适合于大数据集的存储和处理。HDFS采用主从(Master/Slave)架构,一个HDFS集群中通常包含...

    HDFS详细讲解 word

    本文将深入讲解HDFS的核心概念、工作原理以及常用的操作方法。 首先,HDFS的核心组件主要包括NameNode和DataNode。NameNode作为元数据管理节点,存储文件系统的元数据,如文件名、文件位置等。DataNode则是数据存储...

    大数据技术原理与应用 课程实验报告 熟悉HDFS常用操作 word文件

    例如,可以使用`FileSystem`类创建、打开、关闭文件或目录,使用`FSDataOutputStream`写入数据,使用`FSDataInputStream`读取数据。此外,`Path`类用于表示文件或目录的路径,`Configuration`类用于配置HDFS相关参数...

    python解析hdfs文件和实现方式

    首先,我们需要安装Python的HDFS客户端库,最常用的是`pyarrow`和`hdfs3`。`pyarrow`是Apache Arrow项目的一部分,它提供了高效的数据读写功能,而`hdfs3`则是一个轻量级的HDFS接口库。你可以通过pip来安装这两个库...

    实验二:熟悉常用的HDFS操作.docx.zip

    例如,`FileSystem`类是HDFS操作的主要入口点,`FSDataInputStream`和`FSDataOutputStream`用于读写文件。此外,`Path`类表示文件路径,`Configuration`类用于配置HDFS连接参数。 总之,"实验二:熟悉常用的HDFS...

    大数据HDFS二次开发.pdf

    Java API是开发中最常用的方式,提供了丰富的类和方法用于文件系统的操作。Shell命令行则允许用户通过命令行接口执行基本的文件操作。Web UI为用户提供了一个图形化的界面来管理和监控HDFS。 2. **开发环境准备**:...

    web中进行HDFS文件系统操作的demo

    1. **Hadoop SDK**:Java的Hadoop SDK包含了一系列的类和方法,如`FileSystem`、`DFSClient`等,用于实现HDFS的读写操作。开发者可以通过这些API与HDFS进行交互。 2. **JSP页面**:作为Web前端,JSP页面负责接收...

    实验2 熟悉常用的HDFS操作

    - 使用`FileSystem`类的`write`和`append`方法进行文件的创建和追加。 - `FileStatus`类获取文件的元数据,如权限、大小、时间戳和路径。 - 对于目录操作,可以使用`mkdirs`创建目录,`delete`配合`recursive`...

    java操作hdfs依赖包

    开发时,你需要导入这些库,并通过Hadoop的API来实现对HDFS的操作,例如打开一个`FileSystem`实例,创建或打开一个`FSDataInputStream`或`FSDataOutputStream`,以及执行文件的读写操作。 总的来说,这些依赖包构建...

    使用Java API操作HDFS分布式文件系统

    - **org.apache.hadoop.io.IOUtils**:辅助类,包含I/O操作的常用方法。 3. **连接HDFS** 首先,我们需要创建一个`Configuration`实例,设置HDFS的默认FS和相关参数,然后通过`FileSystem.get(conf)`获取`...

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

    - 创建目录:使用`FileSystem`的`mkdirs()`方法创建HDFS上的目录结构。 - 文件存在性检查:通过`exists()`方法来判断HDFS上某个文件或目录是否存在。 - 获取文件/目录大小:使用`getFileStatus()`获取文件或目录...

    实验2-HDFS编程.pdf

    - **检查文件存在性**:使用`FileSystem.exists()`方法,检查HDFS上指定路径的文件是否存在。 5. **实验报告要求**: - 提供实验过程中关键步骤的截图,帮助理解操作流程。 - 公开源代码,展示如何实现上述功能...

    《大数据导论》HDFS的应用.docx

    例如,`FileSystem.get(conf)`获取HDFS的实例,`conf.set()`配置HDFS的访问地址,`FSDataInputStream`和`BufferedReader`用于读取文件内容,`ArrayList`存储数字,进行排序,然后通过`FSDataOutputStream`将排序后的...

    分布式存储系统-HDFS.docx

    - `FileSystem`类:代表一个HDFS文件系统实例,用于创建、打开、删除文件或目录。 - `FSDataInputStream`和`FSDataOutputStream`:用于读写文件数据。 - `Path`类:表示文件或目录的路径。 - `Configuration`类:...

Global site tag (gtag.js) - Google Analytics