1.在windows下解压hadoop,在etc/hadoop中的hadoop.env.cmd修改以下值
set JAVA_HOME=C:PROGRA~1Javajdk1.8.0_102
2.将winutils.exe、hadoop.dll放到hadoopbin下
3.设置环境变量
HADOOP_HOME=d:softwarehadoophadoop2.8.5
在path变量中追加%HADOOP_HOME%bin
4.新建Java项目,项目下新建lib文件夹,将hadoop的jar包拷贝到lib文件夹中,然后导入到项目。
右键项目选properties,在弹出框中选择Librarys
点击add jars,在弹出框中,选择testhdfs1项目下的lib文件夹,选中里面所有的jar包,点击ok
5.代码:
package a;
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;
public class TestHDFS {
FileSystem fs;
public void init() {
try {
URI uri = new URI("hdfs://192.168.150.21:9000");
Configuration conf = new Configuration();
// conf.set("dfs.replication", "2");
// conf.set("dfs.block.size", "64m");
conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
fs = FileSystem.get(uri, conf, "root");
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
public void put(String local, String hdfs) {
try {
fs.copyFromLocalFile(new Path(local), new Path(hdfs));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
// 下载需要配置hadoop_home
public void get(String local, String hdfs) {
try {
fs.copyToLocalFile(new Path(hdfs), new Path(local));
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TestHDFS th = new TestHDFS();
th.init();
th.put(args[0], args[1]);
// th.get(args[0], args[1]);
}
}
在D盘test文件夹下新建一个如下文本文件,保存一些单词,以供上传到HDFS中之用。
通过main方法传参设置本地路径和HDFS的远程路径,在eclipse中运行该程序需要这样设置:
1.在代码上右键【run as】 --【run configurations】,在弹出框中双击如下图所示Java Application。
2.在新窗口中选择Arguments选项卡,在程序参数编辑框中,填入参数。第一个参数是本地路径,第二个参数是HDFS的文件系统地址。
3.点击run即可以运行程序。
4.去HDFS中查看,是否将本地程序上传到虚拟机中的HDFS中。
5.以同样方式执行下载。



