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

2023-09-22 14:24:31

一、实验目标

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

}

程序分析

本程序是一个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();
        }
    }

}

程序分析

本程序是一个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();
	}
}

程序分析

本程序是一个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

更多推荐

【Web3】DAO相关的基础知识

这里写目录标题DAO的基础概念为什么需要DAO?DAO的种类DAO的运作方式知名DAO的介绍BanklessDAOSeeDAODAO的生态全景图分类治理框架DAO的工具DAO众筹平台介绍-JuiceBoxDAO投票治理介绍-SnapshotDAO贡献&激励-POAPDAO信息管理-NotionDAO与传统组织的比较DA

css知识学习系列(4)-每天10个知识点

目录1.**CSS中的“box-sizing”属性与“border”属性有什么关系?**2.**在CSS中,如何使用“calc()”函数进行计算?有什么使用技巧?**3.**在CSS中,如何使用“@import”引入外部样式表?有哪些注意事项?**4.**Flexbox和Grid布局在实践中哪个更常用?为什么?**5.

redis 持久化机制

1.前言本文将先说明持久化、主存复制(及读写分离)、哨兵、以及集群几种技术分别解决了Redis高可用的什么问题;然后详细介绍Redis的持久化技术,主要是RDB和AOF两种持久化方案;在介绍RDB和AOF方案时,不仅介绍其作用及操作方法,同时介绍持久化实现的一些原理细节及需要注意的问题。最后,介绍在实际使用中,持久化方

蓝牙核心规范(V5.4)11.1-LE Audio 笔记之诞生的前世今生

专栏汇总网址:蓝牙篇之蓝牙核心规范学习笔记(V5.4)汇总_蓝牙核心规范中文版_心跳包的博客-CSDN博客爬虫网站无德,任何非CSDN看到的这篇文章都是盗版网站,你也看不全。认准原始网址。!!!1.LEAudio应用的场景这里面有四个场景是LEAudio最初需要应用的场景。比如助听器行业,这里可以讨论下它的拓扑结构、功

【Java】医院智能导诊系统源码:解决患者盲目就诊问题、降低患者挂错号比例

医院智能导诊系统解决患者盲目就诊问题,减轻分诊工作压力。降低患者挂错号比例,优化患者就诊流程,有效提高线上线下医疗机构接诊效率。患者可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。一、医院智能导诊系统概述医院智慧导诊系统是在医疗中使用的引导患者自助就诊挂号,在就诊的过程中有许多患者不知道需要挂什么号,要看什

【uniapp+vue3+u-picker】获取中国省市区数据结构,省市区数据三级联动json文件完整版,已实现三级联动效果

前言:这个功能的实现,中间耽误了几天,在大佬的帮助下终于实现效果,匿名感谢xx大佬要实现的效果如下:1、首先需要获取省市区的数据,不考虑后端返数据,自己使用json文件的话,需要获取到完整的中国省市区数据有个很不错的github源码可供参考,Administrative-divisions-of-China中国行政区划

hive的join优化

1.分析数据倾斜情况:可以使用EXPLAIN命令获取Join操作的执行计划,并观察输出中的数据倾斜情况。比如下面的查询语句:EXPLAINSELECT*FROMTable_AJOINTable_BONTable_A.key=Table_B.key;输出的执行计划中,可以通过STAGEPLANS部分中的Reducer和P

Codeforces Round 162 (Div 2)(A - E)

CodeforcesRound162(Div.2)(A-E)Dashboard-CodeforcesRound162(Div.2)-CodeforcesA.ColorfulStones(SimplifiedEdition)(模拟)模拟一下即可#include<bits/stdc++.h>usingnamespacest

网络安全(黑客)自学

前言作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。计算机各领域的知识水平决定你渗透水平的上限。【1】比如:你编程水平高,那你在代码审计的时候就会比别人强,写出的漏洞利用工具就会比别人的好用;【2】比如:你数据库知识水平高,那你在进行SQL注入攻击的时候,你就可以写出更多更好的SQL注入语句

泛化误差上界(二分类)

对于二分类问题,当假设空间是有限个函数的集合F={f1,f2,...,fd}F=\{f_1,f_2,...,f_d\}F={f1​,f2​,...,fd​}时,对∀f∈F\forallf\inF∀f∈F,至少以概率1−δ,0<δ<11-\delta,0<\delta<11−δ,0<δ<1,以下不等式成立R(f)≤R^(

【论文笔记】Scene as Occupancy

原文链接:https://arxiv.org/abs/2306.028511.引言与传统的3D框物体表达相比,使用3D占用表达是几何感知的,因为3D框表达简化了物体的形状。此外,现有基于视觉的方法很少考虑时间信息;单阶段方法缺少从粗到细的细化过程。本文提出OccNet,一种基于多视图图像的方法,包含级联体素解码器,利用

热文推荐