HDFS的接口(命令行接口和Java接口)--笔记

HDFS 文件的系统访问的接口
1.Hadoop的shell命令脚本


hadoop fs -ls   列出某一个目录下的文件
hadoop fs -lsr 递归的方式列出所有文件


hadoop fs -mkdir 创建目录


hadoop fs -rm   删除文件或者目录
hadoop fs -rmr  删除目录及目录下的所有目录或者文件


hadoop fs -put src /  向hdfs上传文件
hadoop fs -copyFromLocal /src / 


hadoop fs -get /hdfs
hadoop fs -copyToLocal  从hdfs拷贝到本地文件系统


2.hdfs第二种访问接口 Java接口 JavaAPI



1) 通过URL的方式去访问
static{
URL.setFsUrlStreamHandler(new FSUrlStreamHandlerFactory());
}


 try{
  //使得URL具备访问HDFS的工厂能力
 
 //通过URL统一资源定位符,具体的定位到hdfs的某一个具体的资源文件上
  URL url = new URL("hdfs://master:9000/a.txt");
  //通过url的 openStream方法拿到目标hdfs上文件的输入流对象
  FSDataInputStream in = url.openStream();
  FileOutputStream foo = new FileOutputStream("/home/zkpk/a.txt");
  IOUtils.copyBytes(in, foo, 4096, false);
 }catch(Exception e){
 
 }finally{
IOUtils.closeStream(in);
 }


2) FileSystem 来操作hdfs(常用)




Object obj = FileSystem.get()
Object extends FileSystem{

}


Object obj = new Object();
FileSystem fs; 
fs = obj; //把子类对象看成父类对象,向上转型




 //获取hdfs的配置 configuration
 Configuration conf = new Configuration();
 FileSystem fs = FileSystem.get(conf);
           fs = FileSystem.get(URI.create(uri), conf);


  InputStream in = fs.openStream();


  IOUtils.copyBytes(in, System.out, 4096, false);


3) FileStatus (文件的元信息, 文件的名字,路径 is目录......)
  


  FileStatu[] list = fs.listStatus();


  Path[] paths = FileUtils.status2path(list)


  for(Path p : paths){
fs = FileSystem.get(RUI.create(p), conf);
fs.openStream();
  }


4)fs.delete
   fs.mkdir()

















posted @ 2016-12-01 16:24  Beeman_xia  阅读(636)  评论(0编辑  收藏  举报