【大数据分布并行处理】实验测试(一)

news2024/11/16 21:49:58

文章目录

  • 测试任务1
  • 测试任务2
  • 测试任务3

测试任务1

使用HDFS相关命令完成下列四个操作(20分)

操作1:在HDFS根目录创建以自己名字命名的目录,并查看是否创建成功(5分)。
提示:截图包括:创建命令及查验结果。
答:hadoop fs -mkdir

1-1

操作2:将/home/zkpk/experiment目录下,新建一个名为自己学号的文本文件(文件内容自拟),查看文件内容,上传到HDFS根目录下(操作1中)新建的目录下,并查验是否成功(5分)。
提示:截图包括:创建文件和上传命令及查验结果。

答:hadoop fs -put

1-2

操作3:在/home/zkpk下新建目录,目录用自己喜欢的电影名或演员名字命名,并下载操作2中新建的文件到该目录中(5分)。
提示:截图包括:新建目录(使用命令创建目录)、下载命令及查验结果。

答:hadoop fs -get

1-3

操作4:删除HDFS根目录下操作1中新建的目录(5分)
提示:截图包括:删除命令、查验命令及查验结果。

答:hadoop fs -rmr

1-4

测试任务2

输出一个目录下多个文件的文件状态和元数据信息,目录和多个文件名自拟,文件内容自拟(30分)

2

(1)给出完整代码(20分);

package hadoop;

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.FileUtil;
import org.apache.hadoop.fs.Path;


public class WJW01 {
	public static void main(String[] args){
		Configuration conf = new Configuration();
		conf.set("fs.DefailtFS", "hdfs://master:9000/");
		FileSystem fs = null;
		Path path[] = new Path[args.length];
		for(int i=0; i<path.length; i++){
			path[i] = new Path(args[i]);
		}
		try{
			fs = FileSystem.get(URI.create(args[0]), conf);
			org.apache.hadoop.fs.FileStatus[] filestatus = fs.listStatus(path);
			Path listPaths[]=FileUtil.stat2Paths(filestatus);
			for(Path p:listPaths){
				System.out.println(p);
				System.out.println(p.getName());
				for(int i=0; i<filestatus.length;i++){
					System.out.println(filestatus[i]);
				}
			}
		}catch(IOException e){
			e.printStackTrace();
		}
	}

}

这是一个使用Hadoop Java API获取HDFS中指定路径下的文件和文件夹的程序。

程序中通过传入命令行参数来获取需要查看的路径,然后通过Hadoop提供的API获取FileSystem对象,从而访问HDFS。接着使用listStatus方法获取指定路径下的所有文件和文件夹的FileStatus对象,再通过FileUtil类中的方法将FileStatus对象转为Path对象。最终循环遍历Path对象输出文件和文件夹的名称。

需要注意的是,在程序中设置了Hadoop集群的默认文件系统为hdfs://master:9000/,如果需要修改需要在conf.set()方法中修改。同时,在获取FileSystem对象时使用了URI.create(args[0]), 这是因为FileSystem.get(URI uri, Configuration conf)方法的参数需要传入URI类型的对象,而args[0]中保存的是需要查看的路径,因此需要进行转换。

另外,程序中使用了try-catch语句处理可能出现的IOException异常。

(2)分别在本地测试和集群进行测试,并给出测试效果截图(10分)

2-1
2-2

测试任务3

综合操作,创建一个类,实现目录文件的创建、删除、读取与写入、重命名、查看是否存在,查看某目录下文件路径信息和文件的最后一次修改时间等操作,测试效果参考下图,要求文件名和目录名自拟,体现个人姓名或学号信息。(50分)

3

(1)给出完整代码(30分)

package hadoop;

import java.io.BufferedInputStream; 
import java.io.FileInputStream;
import java.io.IOException; 
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.hadoop.conf.Configuration; 
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem; 
import org.apache.hadoop.fs.Path; 
import org.apache.hadoop.io.IOUtils;

public class WJW02 {
	
	public static Configuration conf = new Configuration();
	
	public static void Read(String[] args) throws IOException {
	    conf.set("fs.defaultFS", "hdfs://master:9000");
	    FileSystem fs = FileSystem.get(conf);
	    FSDataInputStream in =fs.open(new Path(args[2]));
	    IOUtils.copyBytes(in, System.out, 4096, false);
	    System.out.println("read: " + args[2] + " success");
	}
	
	public static void Write(String[] args) throws IOException {
	    conf.set("fs.defaultFS", "hdfs://master:9000");
	    BufferedInputStream in = new BufferedInputStream(new FileInputStream(args[1]));
	    FileSystem fs = FileSystem.get(conf);
	    FSDataOutputStream out = fs.create(new Path(args[2]));
	    IOUtils.copyBytes(in, out, 4096, false);
	    System.out.println("write: " + args[1] + " to " + args[2] + " success");
	}
	
	public static void Mkdir(String[] args) throws IOException {
	    conf.set("fs.defaultFS", "hdfs://master:9000");
	    FileSystem fs = FileSystem.get(conf);
	    fs.mkdirs(new Path(args[0]));
	    System.out.println("mkdir: " + args[0] +" success");
	}
	
	public static void Delete(String[] args) throws IOException {
	    conf.set("fs.defaultFS", "hdfs://master:9000");
	    FileSystem fs = FileSystem.get(conf);
	    fs.delete(new Path(args[0]), true);
	    System.out.println("delete: " + args[0] + " success");
	}
	
	public static void Rename(String[] args) throws IOException {
	    conf.set("fs.defaultFS", "hdfs://master:9000");
	    FileSystem fs = FileSystem.get(conf);
	    Path ori = new Path(args[2]);
	    Path dest = new Path(args[3]);
	    boolean result = fs.rename(ori, dest);
	    if (result) {
	        System.out.println("rename: " + args[2] + " to " + args[3] + " success");
	    } else {
	        System.out.println("rename not success");
	     }
	}

	public static void Exist(String[] args) throws IOException {
		 conf.set("fs.defaultFS", "hdfs://master:9000");
	    FileSystem fs = FileSystem.get(conf);
	    boolean result = fs.exists(new Path(args[0]));
	    fs.close();
	    if(result==true){
	    	System.out.println("file: " + args[0] + " exist");
	    }else{
	    	System.out.println("file: " + args[0] + " not exist");
	    }
	}

	public static void LastModifyTime(String[] args) throws IOException{
		conf.set("fs.defaultFS", "hdfs://master:9000");
		FileSystem fs = FileSystem.get(conf);
		Path path = new Path(args[3]);
		if (fs.exists(path)) {
		    FileStatus fileStatus = fs.getFileStatus(path);
		    long modificationTime = fileStatus.getModificationTime();
		    String lastModifiedTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(modificationTime));
		    System.out.println("file: " + args[3] + " last modified time\uff1a" + lastModifiedTime);
		}else{
			System.out.println("file: " + args[3] + " not exist");
	
		}
	}
	
   public static void ListFiles(String[] args) throws IOException{
		 conf.set("fs.defaultFS", "hdfs://master:9000");
       FileSystem fs = FileSystem.get(conf);
       Path path = new Path(args[0]);
       if (fs.isDirectory(path)) {
           FileStatus[] fileStatuses = fs.listStatus(path);
           for (FileStatus fileStatus : fileStatuses) {
               System.out.println("dir has file: " + fileStatus.getPath());
           }
       } else {
           System.out.println("dir: " + args[0] + " not exist");
       }
   }
	
	public static void main(String[] args) throws IOException{
	    args = new String[6];
	    args[0] = "hdfs://master:9000/wjw01";
	    args[1] = "/home/zkpk/experiment/word.txt";
	    args[2] = "hdfs://master:9000/wjw01/file1.txt";
	    args[3] = "hdfs://master:9000/wjw01/renamefile.txt";
	    Delete(args);
	    Mkdir(args);
	    Write(args);
	    Read(args);
	    Exist(args);
	    Rename(args);
	    LastModifyTime(args);
	    ListFiles(args);
	}
}

这是一个使用Hadoop Java API操作HDFS的程序,包含了创建目录、删除文件、重命名文件、判断文件是否存在、获取文件最后修改时间、列出目录下的文件等功能。

程序中使用了Hadoop提供的API,通过FileSystem类的get()方法获取FileSystem对象,然后使用该对象进行文件和文件夹的操作。

具体实现如下:

  1. Mkdir 方法

该方法用于创建目录,首先设置Hadoop集群的默认文件系统为hdfs://master:9000,然后获取FileSystem对象,最后调用FileSystem对象的mkdirs()方法创建目录。

  1. Delete 方法

该方法用于删除文件,同样首先设置Hadoop集群的默认文件系统为hdfs://master:9000,获取FileSystem对象,然后使用FileSystem对象的delete()方法删除指定路径下的文件或目录,第二个参数设置为true表示递归删除所有文件和目录。

  1. Rename 方法

该方法用于重命名文件,同样首先设置Hadoop集群的默认文件系统为hdfs://master:9000,获取FileSystem对象,然后使用FileSystem对象的rename()方法将原文件路径重命名为目标文件路径。

  1. Write 方法

该方法用于将本地文件写入到HDFS中,通过BufferedInputStream读取本地文件,然后创建FileSystem对象并调用create()方法创建文件输出流,最后使用IOUtils类中的copyBytes()方法将数据从输入流拷贝到输出流。

  1. Read 方法

该方法用于读取HDFS中的文件,首先获取FileSystem对象,然后使用FSDataInputStream对象读取文件内容,最后使用IOUtils类中的copyBytes()方法将数据从流中拷贝到控制台。

  1. Exist 方法

该方法用于判断文件或目录是否存在,获取FileSystem对象后使用FileSystem对象的exists()方法判断文件是否存在。

  1. LastModifyTime 方法

该方法用于获取文件的最后修改时间,同样获取FileSystem对象后使用FileSystem对象的getFileStatus()方法获取文件状态,然后使用FileStatus对象的getModificationTime()方法获取最后修改时间,最后使用SimpleDateFormat类将时间转换为指定格式。

  1. ListFiles 方法

该方法用于列出指定目录下的文件信息,首先获取FileSystem对象,然后使用FileSystem对象的listStatus()方法获取目录下的文件状态数组,最后遍历数组输出文件的路径。

程序中使用main()方法调用上述方法,对HDFS进行增删改查等操作。

(2)分别给出本地和集群测试效果截图(20分)

3-1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1234270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测 详解SSD原理,数据处理与复现

原理详解 前言 今天我们要读的这篇VGGNet&#xff08;《Very Deep Convolutional Networks For Large-Scale Image Recognition》&#xff09;&#xff0c;就是在AlexNet基础上对深度对网络性能的影响做了进一步的探索。它是ImageNet 2014年亚军&#xff0c;相比于AlexNet&am…

智能车入门补充篇——电感值处理、转向控制与巡线

冒泡法 冒泡法是一种简单的排序算法&#xff0c;它重复地遍历要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数列已经排序完成。冒泡排序的时间复杂度为O(n^…

电脑上可以写便签的软件哪些界面比较可爱且好用?

电脑上可以安装使用的便签类软件比较多&#xff0c;在选择使用电脑便签软件时&#xff0c;很多人对便签的外观界面还是比较在意的&#xff0c;一个好看的便签界面在一方面可以引起大家的注意&#xff0c;另一方面可以增加电脑桌面背景和便签类软件的协调性。 电脑便签软件通常…

Web测试中文件上传测试

总体情况 1、功能实现&#xff1a; &#xff08;1&#xff09;文件类型正确、大小合适 &#xff08;2&#xff09;文件类型正确&#xff0c;大小不合适 &#xff08;3&#xff09;文件类型错误&#xff0c;大小合适 &#xff08;4&#xff09;文件类型和大小都合适&#x…

引迈-JNPF低代码项目技术栈介绍

从 2014 开始研发低代码前端渲染&#xff0c;到 2018 年开始研发后端低代码数据模型&#xff0c;发布了JNPF开发平台。 谨以此文针对 JNPF-JAVA-Cloud微服务 进行相关技术栈展示&#xff1a; 1. 项目前后端分离 前端采用Vue.js&#xff0c;这是一种流行的前端JavaScript框架&a…

风丘远程试验管理平台TFM 支持“一键式“数据管理和监控

随着信息技术的高速发展&#xff0c;企业对远程试验实时监控与数据管理的需求日益增强。而利用远程试验信息协同技术&#xff0c;可突破部门与地域的限制&#xff0c;并把试验现场的车辆状态信息、试验数据和分析结果实时传输给数据分析部门和设计部门等&#xff0c;从而缩短时…

SQL的连接join

一、连接说明 union、intersect等集合运算&#xff0c;它的特征是以 “行” 为单位进行操作&#xff0c;通俗点说&#xff0c;就是进行这些集合运算&#xff0c;会导致记录行数的增减&#xff0c;使用union会增加记录行数&#xff0c;使用 intersect 或 expect 会减少行记录&a…

印刷企业数字工厂管理系统建设方案

随着科技的飞速发展&#xff0c;传统印刷企业正面临着前所未有的挑战。产能短缺、质量控制不足、成本控制不力以及服务质量不高等问题成为了制约企业发展的瓶颈。为了解决这些问题&#xff0c;印刷企业需要积极拥抱数字化转型&#xff0c;构建数字工厂管理系统。 一、印刷企业数…

Figma 是什么软件?为什么能被Adobe收购

很多人一定早就听说过Figma的名字了。看到很多设计同行推荐&#xff0c;用了很久&#xff0c;疯狂的安利朋友用。是什么让这么多设计师放弃了FigmaSketch的魅力&#xff1f;下面的内容将详细分享一些与Figma相关的知识点&#xff0c;并介绍这个经常听到但不熟悉的工具。 Figma…

nacos鉴权报invalid username or password

操作 你得检查一下nacos的配置的数据库有没有缺少表&#xff0c;可以在下图找到nacos的官方的配置库&#xff1a; 然后注意到这个SQL文件的最后的两行&#xff0c;这两行就是插入默认的nacos的登录密码的&#xff0c;如果你设置了对应的配置的文件其实也是没有用的最后他还是…

最小最大表示法超详细讲解

文章目录 前言循环同构串最小表示法暴力解法暴力解法的可优化之处最小表示法的代码实现 最大表示法 前言 最小/最大表示法是用来找出字符串的最小/最大字典序的循环同构串的方法&#xff0c;其求解算法可以达到O(N)&#xff0c;过程很像KMP算法的next数组推导过程&#xff0c;都…

k8s-pod管理 3

pod是可以创建和管理k8s 计算的最小可部署单元&#xff0c;一个pod 代表着集群中运行的一个进程&#xff0c;每个pod 都有一个唯一的ip pod包裹了容器 下载测试镜像 创建自主式的pod 查看创建的pod的详情信息 删除pod 创建控制器 副本过多&#xff0c;需要进行负载均衡减轻节点…

uniapp中实现圆形进度条的方式有哪些?

前言 在uniapp开发小程序或者apk时&#xff0c;页面需要用到一个圆形进度条&#xff08;带文字和百分比的&#xff09;&#xff0c;自己也自定义过一个,但是有一点小问题&#xff0c;咱先展示如何引入插件市场的在介绍自定义的&#xff01;一共四种&#xff0c;但是你需要考虑自…

G管螺纹尺寸对照表

G管螺纹尺寸对照表 NPT 是 National (American) Pipe Thread 的缩写&#xff0c;属于美国标准的 60 度锥管螺纹&#xff0c;用于北美地区&#xff0e;国家标准可查阅 GB/T12716-1991 PT 是 Pipe Thread 的缩写&#xff0c;是 55 度密封圆锥管螺纹&#xff0c;属惠氏螺纹家族&a…

视频剪辑技巧:如何高效地将多个视频合并成一个新视频

在视频制作过程中&#xff0c;将多个视频合并成一个新视频是一个常见的操作。这涉及到将多个片段组合在一起&#xff0c;或者将不同的视频素材进行混剪。无论是制作一部完整的影片&#xff0c;还是为社交媒体提供短视频&#xff0c;都要掌握如何高效地将多个视频合并。现在一起…

广州华锐互动:3D模拟体验火箭发射过程有什么教育意义?

3D虚拟还原火箭发射过程在教育领域有着深远的意义。它能够为学生提供直观、生动的体验&#xff0c;帮助他们更好地理解和掌握相关知识&#xff0c;激发他们对科技的兴趣和探索欲望。 首先&#xff0c;3D虚拟还原火箭发射过程可以帮助学生更好地理解和掌握航天科技知识。在火箭发…

vue-waterfall2 实现瀑布流,及总结的问题

注意&#xff1a;引入需要在主界面引入&#xff0c;直接在组件中引用会有问题 1.安装 npm install vue-waterfall21.8.20 --save &#xff08;提示&#xff1a;一定要安装1.8.20&#xff0c;最新版会有一部分问题&#xff09; 2.打开main.js文件 import waterfall from v…

python 实现等声值线图绘制

今天讲一类环评项目的噪声预测 - 风电 风机噪声作为面源目前难有成熟的模型进行预测。根据国内外的研究&#xff0c;都是根据与风机中心的位置进行分级预测。 翟国庆等利用美国航天航空局&#xff08;NASA&#xff09;研发的风电机组噪声预测模型&#xff08;以下简称 NASA”…

数字化转型导师坚鹏:数字化时代银行网点厅堂营销5大重点分析

数字化时代银行网点厅堂营销存在以下5大重点&#xff1a; 1、厅堂宣传。应以主推产品作为厅堂宣传的宣传重点&#xff0c;结合视频宣传、平面物料、互动机具、陈列物料等多维度&#xff0c;开展有序重复展示&#xff0c;进而加大吸引客户关注度。 2、产品推荐。在识别出中高端…

基于混沌博弈算法优化概率神经网络PNN的分类预测 - 附代码

基于混沌博弈算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于混沌博弈算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于混沌博弈优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…