0


Hadoop系统应用之HDFS相关操作 - - Java-API对HDFS的操作(IDEA版)

一、实验目标

通过Java API来操作HDFS文件系统HDFS,相关的操作有:文件上传、文件下载、新建文件夹、查看文件、删除文件。

二、条件准备

1.Linux下安装好hadoop,这里使用hadoop2.7.3

2.window解压hadoop2.7.3的包

2.Windows下安装好jdk1.8

3.Windows下安装好IDEA,这里使用IDEA2022

4.Windows下安装好maven,这里使用Maven3.6.3

5.在win系统下不配置hadoop环境,直接运行代码会报错,显示缺少winutils.exe 和 hadoop.dll 两个文件. (文件位于个人主页&(13条消息) Hadoop系统应用之java-API对HDFS的操作实验缺少的两个文件-桌面系统文档类资源-CSDN文库)

6.将hadoop-2.7.3文件夹拷贝到一个没有中文的路径中;

7.把winutils.exe 和 hadoop.dll 两个文件放到hadoop-2.7.3文件夹中bin目录下

8.在windows系统,配置hadoop的环境变量: HADOOP_HOME,并将%HADOOP_HOME%\bin添加到path中.

9.把hadoop-2.7.3文件夹中bin目录下的hadoop.dll 放到系统盘: C:Windows \System32目录下

三、用idea创建对应的Java项目

1.新建一个Maven工程

2.在pom.xml添加相关依赖(ctr+s保存后,会下载对应的依赖)

代码如下

  <dependencies>
        <!-- Hadoop所需依赖包 -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>2.7.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.7.3</version>
        </dependency>

        <!-- junit测试依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
        </dependency>
    </dependencies>

</project>

3.右下角下载依赖

4.查看依赖和外部库

四、初始化

1.创建一个java类,添加对应代码

public class JavaAPI {
    FileSystem hdfs = null;

    public JavaAPI() {
    }

    @Before
    public void init() throws IOException {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://yangjian00:9000");
        System.setProperty("HADOOP_USER_NAME", "root");
        this.hdfs = FileSystem.get(conf);
    }

    @After
    public void close() throws IOException {
        this.hdfs.close();
    }
}

ps:上面代码中的参数**"hdfs://yangjian00:9000"**是hadoop配置文件中core-site.xml的配置信息,

五、HDFS代码操作

1.上传文件到HDFS文件系统

(1)我在D盘的HDFS文件夹下面创建了个test.txt文本

(2)写入代码

    /*
    上传测试
     */
    @Test
    public void testUploadFileToHDFS() throws IOException {
        // 待上传的文件路径(windows)
        Path src = new Path("D:\\Hadoop\\HDFS");
        // 上传之后存放的路径(HDFS)
        Path dst = new Path("/TEXT");
        // 上传
        hdfs.copyFromLocalFile(src,dst);
        System.out.println("上传成功");
    }

(3)在centos的Hadoop中查看test.txt文件(上传成功)

2.从HDFS下载文件到本地

(1)写入下载代码

  /*
    下载测试
     */
    @Test
    public void testDownFileToLocal() throws IOException {
        // 待下载的路径(HDFS)
        Path src = new Path("/TEXT.txt");
        // 下载成功之后存放的路径(windows)
        Path dst = new Path("D:\\Hadoop\\HDFS\\TEXT1");
        // 下载
        hdfs.copyToLocalFile(false,src,dst,true);
        System.out.println("下载成功");

(2)从浏览器中下载查看

3.在HDFS中创建目录

(1)写入代码

/*
创建目录测试
 */
    @Test
    public void testMkdirFile() throws IOException {
        // 待创建目录路径
        Path src = new Path("/YYDS");
        // 创建目录
        hdfs.mkdirs(src);
        System.out.println("创建成功");
    }

(2)从浏览器中下载查看

4.从新命名测试

(1)写入代码

/*
重命名测试
 */
    @Test
    public void testRenameFile() throws IOException {
        // 重命名之前的名字
        Path src = new Path("/YYDS");
        // 重命名之后的名字
        Path dst = new Path("/HDFS2");
        // 重命名
        hdfs.rename(src,dst);
        System.out.println("重命名成功");
    }

(2)从浏览器中下载查看

5.删除测试

       /*
删除测试
 */
       @Test
       public void testRM() throws  IOException {
           hdfs.delete(new Path("/HDFS"),true);
           hdfs.delete(new Path("/HDFS1"), true);
           hdfs.delete(new Path("/tmp"), true);
       }

标签: hadoop java hdfs

本文转载自: https://blog.csdn.net/m0_57464618/article/details/130062956
版权归原作者 -牧心- 所有, 如有侵权,请联系我们删除。

“Hadoop系统应用之HDFS相关操作 - - Java-API对HDFS的操作(IDEA版)”的评论:

还没有评论