使用Java操作Hadoop API
Hadoop的环境一旦搭建完成,我们就可以进行Hadoop应用开发了,可以进行Hadoop开发的程序语言有多种选择,比如JAVA,python,ruby等等。这里我们选择JAVA语言进行开发(语言无所谓好坏,看你擅长什么喜欢什么了)。
因为我选择了JAVA语言,也就选择了eclipse开发工具,这里我用的是eclipse-java-oxygen-R-win32-x86_64,当然,Hadoop也为eclipse开发了一款插件,hadoop-eclipse-plugin-2.7.1.jar,我们可以下载并安装在eclipse中。
Hadoop库集成
Hadoop库已经在我们的安装目录下了,比如我的安装目录:C:\Programs\hadoop-2.7.1\share\hadoop。
1. 打开eclipse,Window=>Preference=>Java=>Build Path=>User Libraries
2. 点击New,新建一个库,注意此处红色标注的复选框一定不要勾选,命名我就取Hadoop了。
3. 此时我们会看到User Libraries里面多了一个hadoop的Library,我们接下来便要向这个Library里面添加jar包了,我们点击“Add External JARs…”,会弹出文件对话框,让你选择导入的jar。
4. 添加Hadoop的common库,一共有3个
5. 添加Hadoop的common的lib库,一共有63个
6. 添加Hadoop的hdfs库,一共有3个
7. 添加Hadoop的mapreduce库,一共有8个
8. 点击Apply and Close完成Hadoop包的导入工作
创建Java项目
- eclipse创建一个普通的Java项目,名称为HadoopDemo
- 创建成功的项目包含jre和src目录
- 在项目跟目录上右键选择Build Path=>Configure Build Path
- 选择Libraries=>Add Library…
- 在弹出的对话框中,选择User Library
- 选择我们在第一步中创建的Hadoop库,点击Finish完成
- 至此,完成对新建项目的Hadoop库的指定,点击Apply and Close完成所有操作
- 此时,在项目中多了一个Hadoop的库目录
编写代码,测试HDFS功能
- 在项目中新建一个名为HDFSDemo的类,我们用这个类来测试Hadoop的文件上传和下载功
- 编写Java代码
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
class HDFSFile{
FileSystem fileSystem = null;
Configuration conf = null;
public HDFSFile() throws Exception {
init();
}
public void init() throws Exception {
conf = new Configuration();
// 设置配置属性,属性和core-site.xml一定保持一致
conf.set("fs.defaultFS", "hdfs://localhost:9000");
// 拿到一个文件系统操作的客户端实例对象
fileSystem = FileSystem.get(conf);
}
public void uploadFile(String strSrc, String strDest) throws Exception {
fileSystem.copyFromLocalFile(new Path(strSrc), new Path(strDest));
}
public void downloadFile(String strSrc, String strDest) throws Exception {
fileSystem.copyToLocalFile(new Path(strSrc), new Path(strDest));
}
public void close() throws Exception {
fileSystem.close();
}
}
public class HDFSDemo {
public static void main(String[] args) throws Exception {
HDFSFile hdfsFile = new HDFSFile();
hdfsFile.uploadFile("C:\\Programs\\test.txt", "/usr/test.txt");
hdfsFile.downloadFile("/usr/test.txt", "d:/");
hdfsFile.close();
}
}
- 在命令行中启动Hadoop:start-all.cmd
- 以Java application的方式运行项目
- 验证:此时使用命令在终端查看目录/usr,hadoop fs -ls /usr,可以看到
Found 1 items
-rw-r--r-- 3 strive supergroup 0 2017-08-08 17:43 /usr/test.txt
说明上传文件成功
6. 此时在D盘根目录下发现也多了两个文件:test.txt和.test.txt.crc,说明下载文件也是成功了。
7. 恭喜!Java已经无缝的和Hadoop完成了连接!
上一篇: 关于JavaScript深拷贝的一些理解