博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
本地Eclipse连接HDFS进行简单的文件操作
阅读量:5235 次
发布时间:2019-06-14

本文共 6252 字,大约阅读时间需要 20 分钟。

       昨天总结了一点自己在搭建Hadoop完全分布式环境过程中遇到的几个小问题以及解决方案,今天在搭建成功的环境中进行了简单的文件操作,包括:文件目录的创建、文件的创建、本地文件的上传、文件的重命名、文件的删除以及其他几个关于文件的操作,希望对初学的练习者有所帮助。

 

1 package org.apache.hadoop.examples;  2   3   4 import java.io.BufferedOutputStream;  5 import java.io.IOException;  6 import java.net.URI;  7 import java.text.SimpleDateFormat;  8 import java.util.Date;  9  10 import org.apache.hadoop.conf.Configuration; 11 import org.apache.hadoop.fs.BlockLocation; 12 import org.apache.hadoop.fs.FSDataOutputStream; 13 import org.apache.hadoop.fs.FileStatus; 14 import org.apache.hadoop.fs.FileSystem; 15 import org.apache.hadoop.fs.Path; 16 import org.apache.hadoop.hdfs.DistributedFileSystem; 17 import org.apache.hadoop.hdfs.protocol.DatanodeInfo; 18 import org.junit.Before; 19 import org.junit.Test; 20  21 public class FileDemo { 22     private  Configuration conf = new Configuration();//这里创建conf对象有一个默认参数,boolean loadDefaults,默认为true
23     private String rootPath=new String("hdfs://192.168.56.10:9000/"); 24     private FileSystem coreSys=null; 25     /** 26      * 每次执行之前初始化操作,初始化FileSystem核心对象 27      */ 28     @Before 29     public void iniFileSystemObject(){ 30         try { 31             coreSys=FileSystem.get(URI.create(rootPath), conf); 32         } catch (IOException e) { 33             System.out.println("初始化HDFS核心文件对象失败:"+e.getLocalizedMessage()); 34         } 35     } 36     /** 37      * 在HDFS上创建文件目录 38      */ 39     @Test 40     public void createDirOnHDFS(){ 41            Path demoDir=new Path(rootPath+"demoDir"); 42            boolean isSuccess=true; 43            try { 44                isSuccess=coreSys.mkdirs(demoDir); 45            } catch (IOException e) { 46                isSuccess=false; 47            } 48            System.out.println(isSuccess?"目录创建成功!":"目录创建失败!"); 49             50     } 51     /** 52      * 在HDFS上创建文件 53      * @throws Exception  54      */ 55     @Test 56     public void createFile() throws Exception{ 57                 Path hdfsPath = new Path(rootPath + "user/hdfsupload/createDemoFile"); 58                 System.out.println(coreSys.getHomeDirectory()); 59                 String content = "Hello hadoop,this is first time that I create file on hdfs"; 60                 FSDataOutputStream fsout = coreSys.create(hdfsPath); 61                 BufferedOutputStream bout = new BufferedOutputStream(fsout); 62                 bout.write(content.getBytes(), 0, content.getBytes().length); 63                 bout.close(); 64                 fsout.close(); 65                 System.out.println("文件创建完毕!"); 66     } 67     /** 68      * 从本地上传任意文件到服务器HDFS环境 69      * @throws Exception 70      */ 71     @Test 72     public void uploadFile() throws Exception{ 73          Configuration conf = new Configuration(); 74          Path remotePath=new Path(rootPath+"user/"); 75          coreSys.copyFromLocalFile(new Path("D:\\VirtualBox\\Users"), remotePath); 76          System.out.println("Upload to:"+conf.get("fs.default.name")); 77          FileStatus [] files=coreSys.listStatus(remotePath); 78          for(FileStatus file:files){ 79              System.out.println(file.getPath().toString()); 80          } 81     } 82     /** 83      * 重命名文件名 84      */ 85     @Test 86     public void renameFile(){ 87         Path oldFileName=new Path(rootPath+"user/hdfsupload/createDemoFile"); 88         Path newFileName=new Path(rootPath+"user/hdfsupload/renameDemoFile"); 89         boolean isSuccess=true; 90         try { 91             isSuccess=coreSys.rename(oldFileName, newFileName); 92         } catch (IOException e) { 93              isSuccess=false; 94         } 95         System.out.println(isSuccess?"重命名成功!":"重命名失败!"); 96     } 97     /** 98      * 删除文件 99      */100     @Test101     public void deleteFile(){102         Path deleteFile=new Path(rootPath+"user/hdfsupload/job.jar");103         boolean isSuccess=true;104         try {105             isSuccess=coreSys.delete(deleteFile, false);106         } catch (IOException e) {107             isSuccess=false;108         }109         System.out.println(isSuccess?"删除成功!":"删除失败!");110     }111     /**112      * 查找某个文件是否存在113      */114     @Test115     public void findFileIsExit(){116           Path checkFile=new Path(rootPath+"user/hdfsupload/job.jar");117           boolean isExit=true;118           try {119               isExit=coreSys.exists(checkFile);120             } catch (IOException e) {121                 isExit=false;122            }123         System.out.println(isExit?"文件存在!":"文件不存在!");124     }125     /**126      * 查看某个文件的最后修改时间127      * @throws IOException 128      */129     @Test130     public void watchFileLastModifyTime() throws IOException{131          Path targetFile=new Path(rootPath+"user/hdfsupload/renameDemoFile");132          FileStatus fileStatus=coreSys.getFileStatus(targetFile);133          Long lastTime=fileStatus.getModificationTime();134          Date date=new Date(lastTime);135          SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");136          System.err.println("文件的最后修改时间为:"+format.format(date));137     }138     /**139      * 获取某个路径下面的所有文件140      * @throws IOException 141      */142     @Test143     public void getUnderDirAllFile() throws IOException{144         Path targetDir=new Path(rootPath+"user/hdfsupload/");145         FileStatus []fileStatus=coreSys.listStatus(targetDir);146         for(FileStatus file:fileStatus){147             System.out.println(file.getPath()+"--"+file.getGroup()+"--"+file.getBlockSize()+"--"+file.getLen()+"--"+file.getModificationTime()+"--"+file.getOwner());148         }149     }150     /**151      * 查看某个文件在HDFS集群的位置152      * @throws IOException 153      */154     @Test155     public void findLocationOnHadoop() throws IOException{156         Path targetFile=new Path(rootPath+"user/hdfsupload/AA.txt");157         FileStatus fileStaus=coreSys.getFileStatus(targetFile);158         BlockLocation []bloLocations=coreSys.getFileBlockLocations(fileStaus, 0, fileStaus.getLen());159         for(int i=0;i
"+dataInfos[j].getDatanodeReport()+"-->"+174 dataInfos[j].getDfsUsedPercent()+"-->"+dataInfos[j].getLevel());175 }176 }177 178 }

 

 

转载于:https://www.cnblogs.com/ljhoracle/p/4966980.html

你可能感兴趣的文章
PS 滤镜— — sparkle 效果
查看>>
我(webabcd)的文章索引
查看>>
snmpwalk命令常用方法总结
查看>>
.gitignore 配置
查看>>
网站产品设计
查看>>
TCP/IP协议
查看>>
如何修改被编译后DLL文件 (转发)
查看>>
C++按格式接收输入字符(京东,滴滴,360笔试必用)
查看>>
POJ 2255 Tree Recovery
查看>>
代理ARP
查看>>
Python 的 sys 模块常用方法?
查看>>
Java hashCode() 方法深入理解 ...
查看>>
Modbus TCP 示例报文
查看>>
spring的annotation
查看>>
go 学习笔记(4) ---项目结构
查看>>
如何解决ORA-01033问题(转)
查看>>
分割线细线
查看>>
java 中的一些运算符问题
查看>>
c# 操作ftp
查看>>
css切换--使用cookie
查看>>