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文件系统下载成功