一、下载安装
1.下载hadoop安装包
2.解压hadoop安装包放到一个文件夹中
3.将文件hadoop.dll和文件winytils.exe 移动到hadoop.2.4.1/bin文件夹下
二 、配置环境变量
新建环境变量HADOOP_HOME
变量值为hadoop所在的文件夹
编辑系统变量得path,添加%HADOOP_HOME%\bin字样
三、hdfs的JavaAPI操作
之前我们都是用hdfs shell 来操作hdfs上的文件,现在我们通过编程的形式操作hdfs,主要是用hdfs中提供的javaAPI构造一个反问客户端的对象,然后通过客户端对象对hdfs上的文件进行操作(新建、上传、下载、删除等)。
1. 常用类
(1)Configuration:该类的对象封装了客户端或服务器的配置
(2)FileSystem:该类的对象是一个文件系统对象,通过该对象调用一些它的方法,从而实现对文件的操作
mkdirs(Path f) | 新建目录 |
copyFromLocalFile(Path src,Path fdt) | 从本地磁盘复制文件到HDFS |
copyToLocalFile(Path src,Path dst) | 从HDFS复制文件到本地磁盘 |
delete(Path f) | 删除指定文件,第二个参数为true表示递归删除 |
Rename(Path src,Path dst) | 重命名文件夹或文件 |
2.HDFSAPI开发的步骤
设置客户端身份,已具备权限在hdfs上进行操作
System.setProperty("HADOOP_USER_NAME","root");
与hdfs建立连接
<1>创建配置对象实例
Configuration conf=new Configuration()
<2>设置操作文件系统是hdfs并指定hdfs的操作地址
conf.set("fs.defaultFS","hdfs://192.168.199.132:9000");
<3>判断要创建的目录是否存在,不存在则创建
if (!fs.exists(new Path("/abc"))){ fs.mkdirs(new Path("/abc")); }
<4>在HDFS上上传文件
public static void main(String[] args) throws IOException { System.setProperty("HADOOP_USER_NAME","root"); Configuration conf=new Configuration(); conf.set("fs.defaultFS","hdfs://192.168.95.132:9000"); FileSystem fs=FileSystem.get(conf); Path src=new Path("根据自己得路径确定\xinfadi.csv"); Path dst=new Path("/abc"); fs.copyFromLocalFile(src,dst); fs.close(); }
<5>从HDFS下载文件
public static void main(String[] args) throws IOException { System.setProperty("HADOOP_USER_NAME","root"); Configuration conf=new Configuration(); conf.set("fs.defaultFS","hdfs://192.168.199.132:9000"); FileSystem fs=FileSystem.get(conf); Path src=new Path("/abc/xinfadi.csv"); Path dst=new Path("G\\abc"); fs.copyFromLocalFile(src,dst); fs.close();
}
<6>删除文件
public static void main(String[] args) throws IOException {
System.setProperty("HADOOP_USER_NAME","root");
Configuration conf=new Configuration();
conf.set("fs.defaultFS","hdfs://192.168.199.132:9000");
FileSystem fs=FileSystem.get(conf);
fs.delete(new Path("/abcd"),true);
fs.close();
}