【实验作业1】自己动手实现HDFS Shell
基于已经学习到的Hadoop API编程知识,自己动手实现一个简单的HDFS Shell程序,程序名称为HShell,要求能够支持以下功能:
1.使用HShell -cp 本地路径 HDFS路径,将文件从Linux本地文件系统拷贝到HDFS指定路径上。
2.使用HShell -rm 路径删除文件
3.使用HShell -rm -r 路径删除目录
4.使用HShell -cp -r 本地目录路径 HDFS路径,将目录从Linux本地拷贝到HDFS指定路径上。
5.使用HShell -list 路径显示某个文件的信息或者某个目录的信息
6.使用HShell -mv 路径 路径移动文件或者重命名文件
7.使用HShell -find 文件名 目录实现在目录下递归查找某个文件名的文件。
实验结果:
1.HShell -cp 功能的测试结果。在终端中查看后显示拷贝成功。
文章来源:https://www.toymoban.com/news/detail-715330.html
实验代码:文章来源地址https://www.toymoban.com/news/detail-715330.html
import com.sun.javaws.IconUtil;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.net.URI;
import java.util.Scanner;
public class HShell {
public static void main(String[] args) {
try {
FileSystem fs = FileSystem.get(new URI("hdfs://master:9000"), new Configuration());
Scanner sc = new Scanner(System.in);
while(true)
{
String cmd1=sc.next();
String cmd2,cmd3,cmd4,cmd5;
if(cmd1.equals("HShell")){
cmd2=sc.next();
if(cmd2.equals("-cp")){
cmd3=sc.next();
cmd4=sc.next();
if(cmd3.equals("-r")){
cmd5=sc.next();
fs.copyFromLocalFile(false,true,new Path(cmd4),new Path(cmd5));
System.out.println("copy directory from "+cmd4+"to "+cmd5);
}
else
{
fs.copyFromLocalFile(new Path(cmd3),new Path(cmd4));
System.out.println("copy file from "+cmd3+"to "+cmd4);
}
}
else if(cmd2.equals("-rm")){
cmd3=sc.next();
if(cmd3.equals("-r")){
cmd4=sc.next();
if(fs.delete(new Path(cmd4),true)){
System.out.println("Directory "+ cmd4 +" has been deleted successfully!");
}
}
else
if(fs.delete(new Path(cmd3),false)){
System.out.println("File "+ cmd3 +" has been deleted successfully!");
}
}
else if(cmd2.equals("-list")){
cmd3=sc.next();
//FileStatus [] fileStatus=fs.listStatus(new Path(cmd3));
FileStatus filestatus =fs.getFileStatus(new Path(cmd3));
System.out.println(filestatus.toString());
}
else if(cmd2.equals("-mv")){
cmd3=sc.next();
cmd4=sc.next();
fs.moveFromLocalFile(new Path(cmd3),new Path(cmd4));
System.out.println("move file from "+cmd3+"to "+cmd4);
}
else if(cmd2.equals("-mv")){
cmd3=sc.next();
cmd4=sc.next();
fs.moveFromLocalFile(new Path(cmd3),new Path(cmd4));
System.out.println("move file from "+cmd3+"to "+cmd4);
}
else if(cmd2.equals("-find")){
cmd3=sc.next();
cmd4=sc.next();
fs.setWorkingDirectory(new Path(cmd4));
if(!fs.exists(new Path(cmd3)))
{
System.out.println(cmd3+" is not found");
}
else {
System.out.println(fs.getFileStatus(new Path(cmd3)).getPath());
}
}
}
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
到了这里,关于云计算实验 HDFS编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!