使用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使用Java操作Hadoop API_第1张图片
2. 点击New,新建一个库,注意此处红色标注的复选框一定不要勾选,命名我就取Hadoop了。
使用Java操作Hadoop API_第2张图片
3. 此时我们会看到User Libraries里面多了一个hadoop的Library,我们接下来便要向这个Library里面添加jar包了,我们点击“Add External JARs…”,会弹出文件对话框,让你选择导入的jar。使用Java操作Hadoop API_第3张图片
4. 添加Hadoop的common库,一共有3个使用Java操作Hadoop API_第4张图片
5. 添加Hadoop的common的lib库,一共有63个使用Java操作Hadoop API_第5张图片
6. 添加Hadoop的hdfs库,一共有3个使用Java操作Hadoop API_第6张图片
7. 添加Hadoop的mapreduce库,一共有8个使用Java操作Hadoop API_第7张图片
8. 点击Apply and Close完成Hadoop包的导入工作使用Java操作Hadoop API_第8张图片

创建Java项目

  1. eclipse创建一个普通的Java项目,名称为HadoopDemo使用Java操作Hadoop API_第9张图片
  2. 创建成功的项目包含jre和src目录使用Java操作Hadoop API_第10张图片
  3. 在项目跟目录上右键选择Build Path=>Configure Build Path使用Java操作Hadoop API_第11张图片
  4. 选择Libraries=>Add Library…使用Java操作Hadoop API_第12张图片
  5. 在弹出的对话框中,选择User Library       使用Java操作Hadoop API_第13张图片
  6. 选择我们在第一步中创建的Hadoop库,点击Finish完成使用Java操作Hadoop API_第14张图片
  7. 至此,完成对新建项目的Hadoop库的指定,点击Apply and Close完成所有操作使用Java操作Hadoop API_第15张图片
  8. 此时,在项目中多了一个Hadoop的库目录使用Java操作Hadoop API_第16张图片

编写代码,测试HDFS功能

  1. 在项目中新建一个名为HDFSDemo的类,我们用这个类来测试Hadoop的文件上传和下载功
  2. 编写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();
    }
}
  1. 在命令行中启动Hadoop:start-all.cmd
  2. 以Java application的方式运行项目
  3. 验证:此时使用命令在终端查看目录/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完成了连接!

你可能感兴趣的:(使用Java操作Hadoop API)