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

 

  

  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-牧心-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值