• 【大数据开发技术】实验05-HDFS目录与文件的创建删除与查询操作


    HDFS目录与文件的创建删除与查询操作

    一、实验目标

    1. 熟练掌握hadoop操作指令及HDFS命令行接口
    2. 掌握HDFS目录与文件的创建方法和文件写入到HDFS文件的方法
    3. 掌握HDFS目录与文件的删除方法
    4. 掌握查询文件状态信息和目录下所有文件的元数据信息的方法

    二、实验要求

    1. 给出主要实验步骤成功的效果截图。
    2. 要求分别在本地和集群测试,给出测试效果截图
    3. 对本次实验工作进行全面的总结。
    4. 完成实验内容后,实验报告文件名加上学号姓名。

    三、实验内容

    1. 创建目录,并将一个本地文件写入到该目录中,实现效果参考下图:
      1

    2. 删除文件与目录,实现效果参考下图:
      2

    3. 查询文件状态信息和目录下所有文件的元数据信息,实现效果参考下图:
      3

    四、实验步骤

    1. 创建目录,并将一个本地文件写入到该目录中

    程序设计

    package com.wjw.cslg;
    
    import java.io.IOException;
    import java.net.URI;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    
    public class WJW01 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Configuration conf = new Configuration();
            FileSystem fs = null;
            args = new String[2];
            args[0] = "hdfs://master:9000/wjw02.txt";
            args[1] = "hdfs://master:9000/wjw02";
            try{
                for(int i=0; i<args.length; i++){
                    fs = FileSystem.get(URI.create(args[i]), conf);
                    fs.mkdirs(new Path(args[i]));
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    程序分析

    本程序是一个Java程序,使用了Hadoop的API,主要功能是在HDFS上创建指定路径的目录。

    首先,程序利用Configuration类创建一个配置对象conf,用于指定Hadoop的配置信息。然后利用FileSystem类创建一个文件系统对象fs,用于与HDFS交互。args数组表示用户在命令行中传入的参数,其中args[0]表示要创建的路径,args[1]表示要创建的目录名。

    接下来,程序进入for循环语句,遍历args数组中的所有路径。在循环体中,程序调用FileSystem的get()方法获取一个文件系统对象,该方法的参数是一个URI对象和一个配置对象conf。URI对象表示HDFS上的路径,可以通过URI.create()方法创建。创建好文件系统对象后,程序调用mkdirs()方法创建指定的目录。

    最后,程序捕获可能的IOException异常,并打印出错误信息。

    总体来说,本程序比较简单,主要是熟悉Hadoop API的使用和理解创建HDFS目录的基本原理。

    运行结果

    4

    1. 删除文件与目录

    程序设计

    package com.wjw.cslg;
    
    import java.io.IOException;
    import java.net.URI;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    
    public class WJW02 {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Configuration conf = new Configuration();
            FileSystem fs = null;
            args = new String[2];
            args[0] = "hdfs://master:9000/wjw02.txt";
            args[1] = "hdfs://master:9000/wjw02";
            try{
                for(int i=0; i<args.length; i++){
                    fs = FileSystem.get(URI.create(args[i]), conf);
                    fs.delete(new Path(args[i]));
                }
            }catch (IOException e){
                e.printStackTrace();
            }
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    程序分析

    本程序是一个Java程序,使用了Hadoop的API,主要功能是在HDFS上删除指定路径的文件或目录。

    首先,程序利用Configuration类创建一个配置对象conf,用于指定Hadoop的配置信息。然后利用FileSystem类创建一个文件系统对象fs,用于与HDFS交互。args数组表示用户在命令行中传入的参数,其中args[0]表示要删除的路径,args[1]表示要删除的目录名。

    接下来,程序进入for循环语句,遍历args数组中的所有路径。在循环体中,程序调用FileSystem的get()方法获取一个文件系统对象,该方法的参数是一个URI对象和一个配置对象conf。URI对象表示HDFS上的路径,可以通过URI.create()方法创建。创建好文件系统对象后,程序调用delete()方法删除指定的文件或目录。

    最后,程序捕获可能的IOException异常,并打印出错误信息。

    总体来说,本程序也比较简单,主要是熟悉Hadoop API的使用和理解删除HDFS文件或目录的基本原理。需要注意的是,删除文件或目录时,需要确保目标存在并且没有被其他程序或用户锁定,否则会删除失败。

    运行结果

    5

    1. 查询文件状态信息和目录下所有文件的元数据信息

    程序设计

    package com.wjw.cslg;
    import java.io.*;
    import org.apache.hadoop.fs.*;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.io.*;
    import org.apache.hadoop.conf.*;
    import java.net.*;
    public class WJW03 {
     
    public static void main(String[] args) {
        // TODO Auto-generated method stub
    	Configuration conf=new Configuration();
    	args=new String[1];
        args[0]="hdfs://master:9000/wjw01.txt";
        conf.set("fs.DefailtFS","hdfs://master:9000/");
        FileSystem fs=null;
        try{
    	    fs=FileSystem.get(URI.create(args[0]),conf);
    	    FileStatus filestatus[]=fs.listStatus(new Path(args[0]));
    	    for(int i=0;i<filestatus.length;i++){
    	        System.out.println(filestatus[i]);
            }
        }catch(IOException e){
            e.printStackTrace();
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    程序分析

    本程序是一个Java程序,使用了Hadoop的API,主要功能是在HDFS上获取指定路径下的所有文件或目录。

    首先,程序利用Configuration类创建一个配置对象conf,用于指定Hadoop的配置信息。接着,程序使用URI.create()方法创建一个URI对象并将其作为参数传递给FileSystem.get()方法,该方法返回一个FileSystem对象,用于与HDFS交互。args数组表示用户在命令行中传入的参数,其中args[0]表示要获取的路径。

    接下来,程序调用FileSystem的listStatus()方法获取指定路径下的所有文件或目录的信息,并将结果存储在一个FileStatus数组中。最后,程序遍历该数组并输出每个文件或目录的信息到控制台。

    需要注意的是,程序在创建配置对象conf时,使用了set()方法设置了fs.DefaultFS属性,用于指定Hadoop集群的默认文件系统地址,即"fs.defaultFS",而不是"fs.DefailtFS"(注意单词拼写的正确性)。

    总体来说,本程序也比较简单,主要用于熟悉Hadoop API的使用和理解获取HDFS路径下文件或目录信息的基本原理。需要注意的是,listStatus()方法只返回指定路径下的直接子文件或目录的信息,而不会递归地返回所有子文件或目录的信息。如果要获取所有子文件或目录的信息,需要使用递归算法来实现。

    运行结果

    6

    附:系列文章

    实验文章目录直达链接
    实验01Hadoop安装部署https://want595.blog.csdn.net/article/details/132767284
    实验02HDFS常用shell命令https://want595.blog.csdn.net/article/details/132863345
    实验03Hadoop读取文件https://want595.blog.csdn.net/article/details/132912077
    实验04HDFS文件创建与写入https://want595.blog.csdn.net/article/details/133168180
    实验05HDFS目录与文件的创建删除与查询操作https://want595.blog.csdn.net/article/details/133168734
    实验06SequenceFile、元数据操作与MapReduce单词计数https://want595.blog.csdn.net/article/details/133926246
    实验07MapReduce编程:数据过滤保存、UID 去重https://want595.blog.csdn.net/article/details/133947981
    实验08MapReduce 编程:检索特定群体搜索记录和定义分片操作https://want595.blog.csdn.net/article/details/133948849
    实验09MapReduce 编程:join操作和聚合操作https://want595.blog.csdn.net/article/details/133949148
    实验10MapReduce编程:自定义分区和自定义计数器https://want595.blog.csdn.net/article/details/133949522
  • 相关阅读:
    【设计模式-前端】单例模式深刻理解和实现
    Python —— hou.Node class
    AWTK-MODBUS 发布,欢迎一起来完善。
    三年!
    玩转redis(一)——基础数据结构
    Bootstrap的行、列布局设计(网络系统设计)
    关于this指向和react vue2 3 的diff--后续补充
    Python爬虫基础之Requests详解
    阿里云服务器上安装docker命令记录
    具有自适应边界与最优引导的莱维飞行蚁狮优化算法-附代码
  • 原文地址:https://blog.csdn.net/m0_68111267/article/details/133168734