当前位置: 代码网 > it编程>编程语言>Java > Hadoop系统应用之HDFS相关操作 - - Java-API对HDFS的操作(IDEA版)

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

2024年07月28日 Java 我要评论
5.在win系统下不配置hadoop环境,直接运行代码会报错,显示缺少winutils.exe 和 hadoop.dll 两个文件. (文件位于个人主页&8.在windows系统,配置hadoop的环境变量: HADOOP_HOME,并将%HADOOP_HOME%\bin添加到path中.9.把hadoop-2.7.3文件夹中bin目录下的hadoop.dll 放到系统盘: C:Windows \System32目录下。,相关的操作有:文件上传、文件下载、新建文件夹、查看文件、删除文件。

一、实验目标

通过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);
       }

 

  

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com