Hadoop教程(四)HDFS文件系统JavaAPI接口

Hadoop教程(四)HDFS文件系统JavaAPI接口

 


HDFS是存取数据的分布式文件系统,HDFS文件操作常有两种方式,一种是命令行方式,即Hadoop提供了一套与Linux文件命令类似的命令行工具。另一种是JavaAPI,即利用Hadoop的Java库,采用编程的方式操作HDFS的文件。

 

1 软件下载及安装
 

1.1 相关下载
1、JDK下载:Java是运行在JVM虚拟机 (Java Virtual Machine)之上,因此它的运行需要JDK环境的支持,建议下载Oracle官方发布的JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html

 

2、Eclipse下载:开发Java程序需要强大的Java集成开发环境(IDE)支持,目前最新版本MARS-1版,下载地址:http://mirrors.neusoft.edu.cn/eclipse/technology/epp/downloads/release/mars/1/eclipse-jee-mars-1-win32-x86_64.zip

       

3、Maven下载:Maven是一个项目管理和构建自动化工具。使用Maven管理项目的整个声明周期,包括编译,构建,测试,发布,报告等等。而Maven本身还支持多种插件,可以方便更灵活的控制项目。下载地址:http://maven.apache.org/download.html

 

1.2 软件安装
        JDK安装位置:D:\software\Java\jdk1.8

        Eclipse安装位置:D:\software\Eclipse\eclipse_jee

        Maven安装位置:D:\software\Maven

1.3 环境配置
1、Java环境变量:http://jingyan.baidu.com/article/c85b7a6414f2ee003bac95d5.html

2、Maven环境变量:http://jingyan.baidu.com/article/cb5d61050b8ee7005d2fe04e.html

3、Maven修改默认仓库配置:

在Maven的安装目录下新建repository做为默认仓库:<localRepository>D:\software\Maven\repository</localRepository>

找到修改D:\software\Maven\conf\settings.xml文件

 

4、Eclipse配置Maven:

 

启动Eclipse后,找到Window -> Preference-> Maven -> Installation -> Add按钮,设置安装目录:

 

 

设置setting.xml,找到Window -> Preference-> Maven -> User Settings,设置settings.xml文件:

 

 

1.4 创建项目
打开Eclipse,创建Maven项目,依次点击File-->New-->Maven Project ,请选中Createa simple project(skip archetype selection),之后点击Next:

 

填写Group id和artifact id, Version默认,Packaging默认为jar,Name,Description选填,其他的不填,之后点击Finish:

     

 

1.5 Package视图
找到Package视图:Window -> Show View-> Other,搜索Package Explorer:

 

1.6 配置pom.xml文件
编写pom.xml文件引入依赖的Jar包:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 定义组织标识Id -->
<groupId>com.hadoop</groupId>
<!-- 定义项目名称Id -->
<artifactId>hdfs</artifactId>
<!-- 版本号 -->
<version>0.0.1-SNAPSHOT</version>

<!-- 依赖关系:依赖关系列表 -->
<dependencies>
<!-- 引入hadoop-common Jar包 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.1</version>
</dependency>

<!-- 引入hadoop-hdfs Jar包 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.1</version>
</dependency>
</dependencies>
</project>

2 Java- API操作
2.1 文件下载
Java代码实现:从HDFS文件系统复制文件到本地。

代码实现:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class OpenDemo {
public static void main(String[] args) throws IOException, URISyntaxException {
// 获得FileSystem对象
FileSystem fileSystem = FileSystem.get(new URI("hdfs://Hadoop1:9000"), new Configuration());
// 调用open方法进行下载,参数HDFS路径
InputStream in = fileSystem.open(new Path("/hadoop/LICENSE.txt"));
// 创建输出流,参数指定文件输出地址
OutputStream out = new FileOutputStream("F://hadoop/LICENSE.txt");
// 使用Hadoop提供的IOUtils,将in的内容copy到out,设置buffSize大小,是否关闭流设置true
IOUtils.copyBytes(in, out, 4096, true);
}
}


2.2 上传文件
Java代码实现:从本地文件上传到HDFS文件服务器上。

代码实现:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class UpLoadDemo {
public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
// 获得FileSystem对象,指定使用root用户上传
FileSystem fileSystem = FileSystem.get(new URI("hdfs://Hadoop1:9000"), new Configuration(), "root");
// 创建输入流,参数指定文件输出地址
InputStream in = new FileInputStream("C:\\Windows\\System32\\drivers\\etc\\hosts");
// 调用create方法指定文件上传,参数HDFS上传路径
OutputStream out = fileSystem.create(new Path("/hadoop/hosts"));
// 使用Hadoop提供的IOUtils,将in的内容copy到out,设置buffSize大小,是否关闭流设置true
IOUtils.copyBytes(in, out, 4096, true);
}
}

 


2.3 删除文件
Java代码实现:删除HDFS文件服务器上的文件。

代码实现:

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class DeleteDemo {
public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
// 获得FileSystem对象
FileSystem fileSystem = FileSystem.get(new URI("hdfs://Hadoop1:9000"), new Configuration(), "root");
// 调用delete方法,删除指定的文件。参数:false:表示是否递归删除
boolean flag = fileSystem.delete(new Path("/hadoop/hosts"), false);
// 执行结果:true
System.out.println(flag);
}
}

 


2.4 创建文件
Java代码实理:在HDFS文件服务器上创建文件夹。

代码实现:

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class MkDirDemo {
public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
// 获得FileSystem对象
FileSystem fileSystem = FileSystem.get(new URI("hdfs://Hadoop1:9000"), new Configuration(), "root");
// 调用mkdirs方法,在HDFS文件服务器上创建文件夹。
boolean flag = fileSystem.mkdirs(new Path("/hadoop/dir3"));
// 执行结果:true
System.out.println(flag);
}
}

 

 


 

 

                --以上为《Hadoop教程(四)HDFS文件系统JavaAPI接口》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。
————————————————
版权声明:本文为CSDN博主「_否极泰来_」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yuan_xw/article/details/50383005

posted @ 2021-03-12 19:38  GoodGad  阅读(538)  评论(0编辑  收藏  举报
Live2D