在Windows下开发
首先需要在Windows上搭建Hadoop的开发环境:
1.在windows下解压hadoop,在解压的目录下的etc/hadoop中的hadoop.env.cmd的文件中修改Java环境变量。因为Hadoop无法识别目录中的空格字符,如果我们的JDK安装在默认的C盘中的Program Files文件夹下,需要使用PROGRA~1替换。因为我们Windows环境变量JAVA_HOME中的路径值也包含空格,所以在hadoop.env.cmd配置文件中,不能直接引用环境变量,需要写固定路径,如下所示:
set JAVA_HOME=C:\PROGRA~1\Java\jdk1.8.0_102
2.将winutils.exe、hadoop.dll放到hadoop\bin下
3.设置Widows下的环境变量,添加一个HADOOP_HOME:
HADOOP_HOME=d:\software\hadoop\hadoop2.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.以同样方式执行下载。