欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用Java操作Hadoop API

程序员文章站 2024-03-23 08:27:58
...

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

创建Java项目

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

编写代码,测试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完成了连接!