Hadoop的一些基本操作

下面的就是hadoop的一些文件基本操作,主要有上传文件,下载文件和删除文件;不过要使用以下功能的需要注意一些地方:

1、要注意是否已经在windows系统配置了域名与ip的映射关系;

2、要操作hdfs系统上的文件时,可以用"/"来代替hdfs的根路径(hdfs://hadoop01:9000/)

 


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;


import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.Before;
import org.junit.Test;


public class HadoopDemo {
 private static FileSystem fs = null;
 @Before
 public  void init()throws Exception{
  //如果没有第三个参数,则在上传文件的时候会出现没有权限的错误,不过这样用是不安全的
  //hadoop提供一个叫做kerberos的框架来解决其安全问题
        fs = FileSystem.get(new URI("hdfs://hadoop1:9000"), new Configuration(), "root");
 }
 
 /*
  * 下载文件
  */
 @Test
 public void downLoad()throws Exception{
  InputStream in = fs.open(new Path("/jdk.bin"));     //打开一个输入流
  OutputStream out = new FileOutputStream("C:\\jdk_1.7");  //创建一个文件输出流
  IOUtils.copyBytes(in, out, 4096, true);   //第三个参数表示缓存的字节数、第四个参数表示当下载完成后,自动关闭流
 }
 
 /*
  * 上传文件
  */
 @Test
 public void upLoad()throws Exception{
  InputStream in = new FileInputStream("E://android-sdk_r24.3.3-windows.zip"); //创建一个本地的文件输入流
  OutputStream out = fs.create(new Path("/ni/android.zip")); //创建一个hdfs的输出流
  IOUtils.copyBytes(in, out, 4096, true);
 }
 
 /*
  * 删除文件
  */
 @Test
 public void delete()throws Exception{
  fs.delete(new Path("/jdk.bin"),true);
 }
 public static void main(String[] args) throws Exception {
  // TODO Auto-generated method stub
  
  

 }

}

posted @ 2015-08-02 17:23  canye  阅读(151)  评论(0编辑  收藏  举报