Java实现远程HDFS的文件操作(新建、上传、下载、删除)

原创 2015年11月23日 17:22:11

  HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础篇,为了实现本地与HDFS的文件传输,主要借助Eclipse开发环境,通过java编程实现了远程HDFS的文件创建,上传,下载,删除等。

   其实对HDSF的文件操作主要有两种方式:命令行的方式JavaAPI的方式。命令行的方式简单直接,但是必须要求本地机器也是在Linux系统中已经安装了hadoop,这对习惯用windows系统的用户来说不得不安装虚拟机,然后再在虚拟机上安装Linux系统,这是一种挑。同时windows系统与虚拟机上安装的Linux系统进行文件传输也是要借助一些工具才可以实现。

   为了实现以上所遇到诸如系统不一致,手动输入命令的困扰,我们选择Java API的方式,专门的API函数,可以在非Hadoop机器上实现访问,同时与系统无关(windows、Linux甚至XP系统也可以)。Hadoop中关于文件操作类基本上全部是在"org.apache.hadoop.fs"包中,Hadoop类库中最终面向用户提供的接口类是FileSystem,该类封装了几乎所有的文件操作,例如CopyToLocalFile、CopyFromLocalFile、mkdir及delete等。综上基本上可以得出操作文件的程序库框架:

operator( ) {

      得到Configuration对象 

     得到FileSystem对象 

     进行文件操作 }

具体的HDFS的文件创建,上传,下载,删除等程序设计如下:

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;


public class HDFSTest01 {

/**
* @author dcx by 2015.11.19
* 新建文件 
* @param dsta
* @param conf
* @return
*/
public static boolean CreatDir(String dst , Configuration conf){
Path dstPath = new Path(dst) ;
try{
FileSystem dhfs = FileSystem.get(conf);
       dhfs.mkdirs(dstPath);
}
catch(IOException ie){
ie.printStackTrace() ;
return false ;
}
return true ;
}
 

/**
* @author dcx by 2015.11.19
* 文件上传
* @param src 
* @param dst
* @param conf
* @return
*/
public static boolean putToHDFS(String src , String dst , Configuration conf){
Path dstPath = new Path(dst) ;
try{
FileSystem hdfs = dstPath.getFileSystem(conf) ;
hdfs.copyFromLocalFile(false, new Path(src), dstPath) ;
}
catch(IOException ie){
ie.printStackTrace() ;
return false ;
}
return true ;
}

/**
*  @author dcx by 2015.11.19
* 文件下载
* @param src
* @param dst
* @param conf
* @return
*/
public static boolean getFromHDFS(String src , String dst , Configuration conf){
Path dstPath = new Path(dst) ;
try{
FileSystem dhfs = dstPath.getFileSystem(conf) ;
dhfs.copyToLocalFile(false, new Path(src), dstPath) ;
}catch(IOException ie){
ie.printStackTrace() ;
return false ;
}
return true ;
}

 
/**
* @author dcx by 2015.11.19
* 文件删除
* @param path
* @param conf
* @return
*/
public static boolean checkAndDel(final String path , Configuration conf){
Path dstPath = new Path(path) ;
try{
FileSystem dhfs = dstPath.getFileSystem(conf) ;
if(dhfs.exists(dstPath)){
dhfs.delete(dstPath, true) ;
}else{
return false ;
}
}catch(IOException ie ){
ie.printStackTrace() ;
return false ;
}
return true ;
}




/**
* @param 主函数测试
*/
public static void main(String[] args) {

boolean status = false ;
String dst1 = "hdfs://192.168.1.225:9000/EBLearn_data/new" ;
Configuration conf = new Configuration() ;
 
//java.lang.IllegalArgumentException: Wrong FS:            hdfs://192.168.1.225:9000/EBLearn_data/hello.txt, expected: file:///
    //解决这个错误的两个方案:
//方案1:下面这条命令必须加上,否则出现上面这个错误
conf.set("fs.default.name", "hdfs://192.168.1.225:9000"); // "hdfs://master:9000"  
    //方案2: 将core-site.xml 和hdfs-site.xml放入当前工程中
   status = CreatDir( dst1 ,  conf) ;
   System.out.println("status="+status) ;

   String dst = "hdfs://192.168.1.225:9000/EBLearn_data" ;
String src = "I:/hello.txt" ;

   status = putToHDFS( src ,  dst ,  conf) ;
System.out.println("status="+status) ;
    
src = "hdfs://192.168.1.225:9000/EBLearn_data/hello.txt" ;
dst = "I:/hadoop_need/" ;
status = getFromHDFS( src ,  dst ,  conf) ;
System.out.println("status="+status) ;
 
dst = "hdfs://192.168.1.225:9000/EBLearn_data/hello.txt" ;
status = checkAndDel( dst ,  conf) ;
System.out.println("status="+status) ;
}




}

版权声明:本文为博主原创文章,未经博主允许不得转载 欢迎交流~

java实现对hdfs文件系统的上传,下载,删除,创建文件夹的操作演示

java实现对hdfs文件系统的上传,下载,删除,创建文件夹的操作演示
  • u012965373
  • u012965373
  • 2016年06月26日 23:40
  • 1411

java 实现hadoop的hdfs文件的上传下载删除创建

java 实现 hdfs文件的上传下载删除创建对于ubuntu14.04 下 Hadoop 的安装和eclipse配置hadoop的文档参考: 安装hadoop http://www.powerx...
  • Agly_Clarlie
  • Agly_Clarlie
  • 2017年02月19日 20:42
  • 1867

Java实现远程HDFS的文件操作(新建、上传、下载、删除)

import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs...
  • SuYuMingXiangGuan
  • SuYuMingXiangGuan
  • 2017年06月05日 09:27
  • 507

java 连接 FTP 文件操作(上传,下载,删除,复制

  • 2017年07月13日 15:26
  • 8KB
  • 下载

java 连接 FTP 文件操作(上传,下载,删除,复制

  • 2017年07月23日 19:22
  • 7KB
  • 下载

调用JAVA API 对 HDFS 进行文件的读取、写入、上传、下载、删除等操作

Hadoop文件系统  基本的文件系统命令操作, 通过hadoop fs -help可以获取所有的命令的详细帮助文件。  Java抽象类org.apache.hadoop.fs.FileSys...
  • DF_XIAO
  • DF_XIAO
  • 2016年01月28日 16:50
  • 7547

java操作hdfs,实现文件上传、下载以及查看当前文件夹下所有文件

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别...
  • qq_30158837
  • qq_30158837
  • 2017年11月11日 18:58
  • 162

FTP上传、下载、创建目录、重命名、删除文件操作

  • 2012年04月21日 15:51
  • 22KB
  • 下载

HDFS 使用java api实现上传/下载/删除文件

package hadoop; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import ...
  • i5secs
  • i5secs
  • 2011年12月31日 16:46
  • 5851

hadoop入门java代码hdfs文件操作 wordCount源码

  • 2016年01月27日 12:16
  • 39KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java实现远程HDFS的文件操作(新建、上传、下载、删除)
举报原因:
原因补充:

(最多只允许输入30个字)