Hadoop:通过Java访问并操作Hadoop,进行文件的存取

实验三 HDFS

1 实验目的

  1. 使用Hadoop的分布式存储HDFS系统存储数据;
  2. 命令行方式;
  3. Java方式。

2 实验内容

启动Hadoop集群,使用命令行方式往文件系统中添加数据,下载数据。通过Java访问Hadoop,使用Java操作Hadoop,进行文件的存取。

3 实验知识点

Hadoop;Java;HDFS;命令行;Java访问HDFS。

4 实验时长

    8学时。

5 实验环境

Linux;Hadoop;Java

6 实验过程

、hdfs命令行

(1)查看帮助:hdfs dfs -help

 (2)查看当前目录信息

由于当前路径下无文件,故先创建目录input

随后使用命令:hdfs dfs -ls /:

    (3)上传文件

在home目录下创建文件dd.txt,使用命令:hdfs dfs -put dd.txt /input将本地文件dd.txt上传到hdfs路径中:

 (4)剪切文件:使用命令hdfs dfs -moveFromLocal dd.txt /aa.txt,将本地文件dd.txt剪切到hdfs路径下:

 (5)下载文件到本地。 使用命令:hdfs dfs -get /aa.txt /home,将hdfs路径下的aa.txt文件下载到本地home。

 (6)合并下载

使用命令:hdfs dfs -getmerge /input /aa.txt,将hdfs /input路径下的文件下载到本地aa.txt下

 (7)创建文件夹。使用命令:hdfs dfs -mkdir /add,在hdfs路径下创建目录dd:

 (8)创建多级文件夹。使用命令:hdfs dfs -mkdir -p /dd/szd,一步创建多级文件夹。

(9)移动hdfs文件。使用命令:hdfs dfs -mv /input/dd.txt /dd,将hdfs内文件移动到hdfs指定文件夹下。

(10)复制hdfs文件:使用命令:hdfs dfs -cp /aa.txt /dd/szd,将hdfs指定文件复制到hdfs指定文件夹下

(11)删除hdfs文件。使用命令:hdfs dfs -rm /aa.txt,将hdfs中aa.txt删除。

 (12)删除hdfs文件夹。使用命令:hdfs dfs -rm -r /hello,将hdfs中input目录删除。

 (13)查看hdfs中的文件。使用命令:hdfs dfs -cat /dd/szd/dt.txt。

 

 使用命令:hdfs dfs -tail -f /dd/szd/aa.txt

 (14)查看文件夹中有多少个文件

使用命令:hdfs dfs -count /dd .查看dd文件夹下有多少个文件:

(15)查看hdfs的总空间

使用命令:hdfs dfs -df /以及hdfs dfs -df -h /

(16)修改副本数:使用命令:hdfs dfs -setrep 1 /dd/szd/aa.txt

、配置Hadoop环境

(1)在D:\Hadoop\hadoop-2.8.5\etc\hadoop目录下修改hadoop.env.cmd中的内容:

set JAVA_HOME="C:\Program Files\Java\jdk1.8.0_45"

(2)将winutils.exe放到hadoop\bin目录下。

 (3)在【我的电脑】-【属性】-【高级系统设置】-【环境变量】中添加系统变量HADOOP_HOME。

 (4)Path中添加变量.

 、java操作hdfs

(1)新建java项目Testhadoop,在项目中新建lib文件夹,将jar包拷贝到文件夹中。

(2)在Libraries中添加新的jar包:

 (3)在src中创建新的包a,创建TestHdfs类:

 (4)在TestHadoop类中输入运行代码:

public class TestHdfs {

    FileSystem fs;

    public void init() {

        try {

            URI uri = new URI("hdfs://hp1:9000");

            Configuration conf = new Configuration();

//            conf.set("dfs.replication", "2");

//            conf.set("dfs.block.size", "64m");

            conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");

            fs = FileSystem.get(uri, conf, "root");

        } catch (IOException e) {

            e.printStackTrace();

        } catch (InterruptedException e) {

            e.printStackTrace();

        } catch (URISyntaxException e) {

            e.printStackTrace();

        }

    }

    public void put() {

        try {

//            fs.copyFromLocalFile(new Path("D://software/spring-tool-suite-3.9.0.RELEASE-e4.7.0-win32-x86_64.zip"),

//                    new Path("/test"));

            fs.copyFromLocalFile(new Path("/root/apps/e.zip"),

                    new Path("/ee"));

        } catch (IllegalArgumentException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    //下载需要配置hadoop_home

    public void get() {

        try {

            fs.copyToLocalFile(new Path("/test"),

                    new Path("d://test/sts.zip"));

        } catch (IllegalArgumentException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    public static void main(String[] args) {

        TestHdfs th = new TestHdfs();

        th.init();

        th.put();

        //th.get();

    }

}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值