工程所依赖的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());
}
}
分享到:
相关推荐
* FileSystem:用于访问HDFS文件系统的接口 * Path:用于表示HDFS文件路径的接口 * FSDataInputStream:用于读取HDFS文件的接口 * FSDataOutputStream:用于写入HDFS文件的接口 实验代码 实验代码包括: * HDFSApi:...
实验二:“熟悉常用的HDFS操作”旨在帮助学习者深入理解Hadoop分布式文件系统(HDFS)在大数据处理中的核心地位,以及如何通过Shell命令和Java API进行高效操作。HDFS在Hadoop架构中扮演着存储大数据的核心角色,为...
HDFS 操作详解 大数据实验 2:熟悉常用的 HDFS 操作答案旨在帮助用户熟悉 HDFS 在 Hadoop 体系结构中的角色,并掌握...通过实验,用户可以更好地理解 HDFS 的工作原理和使用方法,从而更好地应用于大数据处理和分析。
2. **Shell命令的掌握**:熟练掌握了HDFS常用Shell命令后,可以在日常运维或数据处理过程中快速高效地执行任务。 3. **Java API的应用**:Java API提供了更高级的功能支持,如并发处理、错误恢复等,对于开发高性能...
1. **上传文件**:在Java代码中,我们可以使用`FileSystem`类的`copyFromLocalFile`方法将本地文件上传到HDFS。这个方法接受两个布尔参数,第一个表示是否删除源文件,第二个表示是否覆盖目标文件。如果目标文件已...
HadoopFileSystem,也就是HDFS(Hadoop Distributed File System),是Hadoop项目中的一个子项目,它是一个高度容错的系统,适合于大数据集的存储和处理。HDFS采用主从(Master/Slave)架构,一个HDFS集群中通常包含...
本文将深入讲解HDFS的核心概念、工作原理以及常用的操作方法。 首先,HDFS的核心组件主要包括NameNode和DataNode。NameNode作为元数据管理节点,存储文件系统的元数据,如文件名、文件位置等。DataNode则是数据存储...
例如,可以使用`FileSystem`类创建、打开、关闭文件或目录,使用`FSDataOutputStream`写入数据,使用`FSDataInputStream`读取数据。此外,`Path`类用于表示文件或目录的路径,`Configuration`类用于配置HDFS相关参数...
首先,我们需要安装Python的HDFS客户端库,最常用的是`pyarrow`和`hdfs3`。`pyarrow`是Apache Arrow项目的一部分,它提供了高效的数据读写功能,而`hdfs3`则是一个轻量级的HDFS接口库。你可以通过pip来安装这两个库...
例如,`FileSystem`类是HDFS操作的主要入口点,`FSDataInputStream`和`FSDataOutputStream`用于读写文件。此外,`Path`类表示文件路径,`Configuration`类用于配置HDFS连接参数。 总之,"实验二:熟悉常用的HDFS...
Java API是开发中最常用的方式,提供了丰富的类和方法用于文件系统的操作。Shell命令行则允许用户通过命令行接口执行基本的文件操作。Web UI为用户提供了一个图形化的界面来管理和监控HDFS。 2. **开发环境准备**:...
1. **Hadoop SDK**:Java的Hadoop SDK包含了一系列的类和方法,如`FileSystem`、`DFSClient`等,用于实现HDFS的读写操作。开发者可以通过这些API与HDFS进行交互。 2. **JSP页面**:作为Web前端,JSP页面负责接收...
- 使用`FileSystem`类的`write`和`append`方法进行文件的创建和追加。 - `FileStatus`类获取文件的元数据,如权限、大小、时间戳和路径。 - 对于目录操作,可以使用`mkdirs`创建目录,`delete`配合`recursive`...
开发时,你需要导入这些库,并通过Hadoop的API来实现对HDFS的操作,例如打开一个`FileSystem`实例,创建或打开一个`FSDataInputStream`或`FSDataOutputStream`,以及执行文件的读写操作。 总的来说,这些依赖包构建...
- **org.apache.hadoop.io.IOUtils**:辅助类,包含I/O操作的常用方法。 3. **连接HDFS** 首先,我们需要创建一个`Configuration`实例,设置HDFS的默认FS和相关参数,然后通过`FileSystem.get(conf)`获取`...
- 创建目录:使用`FileSystem`的`mkdirs()`方法创建HDFS上的目录结构。 - 文件存在性检查:通过`exists()`方法来判断HDFS上某个文件或目录是否存在。 - 获取文件/目录大小:使用`getFileStatus()`获取文件或目录...
- **检查文件存在性**:使用`FileSystem.exists()`方法,检查HDFS上指定路径的文件是否存在。 5. **实验报告要求**: - 提供实验过程中关键步骤的截图,帮助理解操作流程。 - 公开源代码,展示如何实现上述功能...
例如,`FileSystem.get(conf)`获取HDFS的实例,`conf.set()`配置HDFS的访问地址,`FSDataInputStream`和`BufferedReader`用于读取文件内容,`ArrayList`存储数字,进行排序,然后通过`FSDataOutputStream`将排序后的...
- `FileSystem`类:代表一个HDFS文件系统实例,用于创建、打开、删除文件或目录。 - `FSDataInputStream`和`FSDataOutputStream`:用于读写文件数据。 - `Path`类:表示文件或目录的路径。 - `Configuration`类:...