通过Java程序将“/你的名字拼音缩写/input1/shixun1.txt”文件上传到HDFS的“/你的名字拼音缩写/java/input1/”目录下;通过Java程序将HDFS上的“/你的名字拼音

题目:
通过Java程序将“/你的名字拼音缩写/input1/shixun1.txt”文件上传到HDFS的“/你的名字拼音缩写/java/input1/”目录下;通过Java程序将HDFS上的“/你的名字拼音缩写/java/input1/shixun1.txt”下载到本地“/opt/sx/java/output1/”下;
本题声明:
1.采用Linux系统
2.已搭建好的hadoop集群
3.使用java代码链接hadoop集群并上传/下载文件
一、上传文件
将“/你的名字拼音缩写/input1/shixun1.txt”文件上传到HDFS的“/你的名字拼音缩写/java/input1/”目录下
上传文件分析:
本地文件下需存在:“/你的名字拼音缩写/input1/shixun1.txt”
集群中文件需存在目录:“/你的名字拼音缩写/java/input1/”
解决上传文件流程:
(1)首先在本地目录下创建本地文件:
(本题测试名字“张三”)
/zs/input1/shixun1.txt
在这里插入图片描述
(2)在集群中创建目录用于存放上传的文件:
/zs/java/input1/
集群创建目录命名:
hadoop fs -mkdir -p /zs/java/input1
在这里插入图片描述

在这里插入图片描述
(3)编写java程序上传文件
1.创建项目(我创建的是一个名为Test的java项目)
在这里插入图片描述
2.为该项目导入需要连接hadoop集群的jar包
File --> Project Structure --> Modules --> Dependencies
选择右边的+号点击:JARs or directories,找到已准备好的lib包并选中点击ok
(没有lib包的联系我,我发给你,lib包一般存放在 “ /opt/software/ ” 下)
在这里插入图片描述
在这里插入图片描述
3.创建并编写Upload.java文件,将本地文件上传至hadoop集群
在这里插入图片描述

Upload.java文件代码如下:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class Upload {
    public static void main(String[] args) throws Exception {
        Upload upload = new Upload();
        upload.putFileToHDFS();
    }
    public void putFileToHDFS() throws Exception{
        // 上传文件
        // 1 创建配置信息对象
        Configuration configuration = new Configuration();

        configuration.set("fs.defaultFS", "hdfs://hadoop111:9000");
        configuration.set("dfs.replication", "2");

        // 3 获取文件系统
        FileSystem fs = FileSystem.get(configuration);

        // 2 创建要上传文件所在的本地路径
        Path src = new Path("/zs/input1/shixun1.txt");

        // 3 创建要上传到hdfs的目标路径
        Path dst = new Path("hdfs://hadoop111:9000/zs/java/input1/shixun1.txt");
        // 4 拷贝文件
        fs.copyFromLocalFile(src, dst);
        fs.close();
        System.out.println("文件上传成功 ");
    }
}

代码运行效果如下:
在这里插入图片描述
在这里插入图片描述
执行代码如报以下错:
Exception in thread “main” java.lang.IllegalArgumentException: java.net.UnknownHostException: hadoop111
在这里插入图片描述
打开终端 vi /etc/hosts
在这里插入图片描述
添加自己配置集群的IP地址和主机名
在这里插入图片描述
保存退出再次运行程序。

二、下载文件
将HDFS上的“/你的名字拼音缩写/java/input1/shixun1.txt”下载到本地“/opt/sx/java/output1/”下
下载文件分析:
集群中文件需存在:“/你的名字拼音缩写/java/input1/shixun1.txt”
本地文件需存在:“/opt/sx/java/output1/”
集群中的文件就是刚才上传的文件,所以就不用再上传。
本地需存在 “/opt/sx/java/output1/” 空目录。用于存放集群中下载的文件

  1. 在本地创建 “/opt/sx/java/output1/” 空目录
    在这里插入图片描述
  2. 就在上传文件的java项目中,再创一个名为 DownLoad.java文件,用于将集群中的文件“/zs/java/input1/shixun1.txt”下载至本地 “/opt/sx/java/output1/” 中
    在这里插入图片描述

DownLoad.java文件代码如下:

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

public class DownLoad {
    public static void main(String[] args) throws Exception {
        DownLoad downLoad = new DownLoad();
        downLoad.getFileFromHDFS();
    }
    public void getFileFromHDFS() throws Exception{
        // 下载文件
        // 1 创建配置信息对象
        Configuration configuration = new Configuration();

        configuration.set("fs.defaultFS", "hdfs://hadoop111:9000");
        configuration.set("dfs.replication", "2");
        // 3 获取文件系统
        FileSystem fs = FileSystem.get(configuration);

        fs.copyToLocalFile(false, new Path("hdfs://hadoop111:9000/zs/java/input1/shixun1.txt"), new Path("/opt/sx/java/output1/shixun1.txt"), true);
        fs.close();
        System.out.println("文件下载成功");
    }
}

代码运行效果如下:
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值