window下java客户端实现Linux下HDFS文件的上传与下载

1、下载并解压hadoop window平台的包 下载地址

2、配置window下的hadoop的环境变量

  • 新建系统环境变量HADOOP_HOME 值为 hadoop window平台包的解压路径
  • 将变量 ;%HADOOP_HOME%\bin; 加入系统path变量中

3、新建java工程手动导入hadoop先关jar包

  • 将hadoop包/share/hadoop路径的包作为作为user library导入工程 具体做法如下
    • 项目右击->Build Path -> Configure Build Path…
    • 选择Libraries -> add Libraries -> user Library -> Next
    • 选择User Libraries -> new 然后输入jar包的名称,点击OK
    • 点击新建的Libraries -> add External JARS
    • 导入\share\hadoop\commonhadoop-common包以及该路径下lib文件内的包,导入\share\hadoop\hdfs\hadoop-hdfs包以及该路径下lib文件内的jar包
    • 点击OK -> finish ->OK即可

4、开发java客户端

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Before;
import org.junit.Test;
//代码如下
public class HdfsClientDemo {

	FileSystem fs = null ;
	@Before
	public void init() throws IOException, Exception, Exception{
		Configuration conf  = new Configuration();
		conf.set("fs.defaultFS", "hdfs://hadoop01:9000");
		//拿到一个文件系统操作的客户端实例对象,此处如果不传用户,上传下载时会报permission denied
		//此时需要在run configuration -> arguments -> vm arguments  设置 -DHADOOP_USER_NAME为Linux的hdfs用户
      //fs = FileSystem.get(conf);
		//可以直接传入URI和用户
		fs = FileSystem.get(new URI("hdfs://hadoop01:9000"),conf,"hadoop");
	}
	@Test
	public void testUpload() throws Exception{
		fs.copyFromLocalFile(new Path("D:/access.log"), new Path("/access.txt"));
		fs.close();
	}
	@Test
	public void testDownLoad() throws Exception, Exception{
		fs.copyToLocalFile(false,new Path("/access.log.copy"), new Path("d:/"),true);
		fs.close();
	}
}

测试

  • 本地windos文件系统上传成功!
    在这里插入图片描述
  • Linux上HDFS文件系统下载成功
    在这里插入图片描述

你可能感兴趣的:(HDFS)