• 大数据-09-Intellij idea 开发java程序操作HDFS


    主要摘自 http://dblab.xmu.edu.cn/blog/290-2/

    简介

    本指南介绍Hadoop分布式文件系统HDFS,并详细指引读者对HDFS文件系统的操作实践。Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Hadoop核心组件之一,如果已经安装了Hadoop,其中就已经包含了HDFS组件,不需要另外安装。

    利用Java API与HDFS进行交互

    Hadoop不同的文件系统之间通过调用Java API进行交互,上面介绍的Shell命令,本质上就是Java API的应用。下面提供了Hadoop官方的Hadoop API文档,想要深入学习Hadoop,可以访问如下网站,查看各个API的功能。
    利用Java API进行交互,需要利用软件Eclipse编写Java程序。

    (一) 在Ubuntu中安装Intellij idea

    直接在官网下载试用版本ideaIU-2018.1.1.tar.gz

    (二)在idea创建项目

    点击创建新项目

    选择java项目, 如果在SDK未显示1.8, 请点南new按键添加相应SDK,默认位置为/usr/lib/jvm/java-8-openjdk-amd64

    在“Project name”后面输入工程名称“HDFSExample”,选中“Use default location”,让这个Java工程的所有文件都保存到“/home/hadoop/HDFSExample”目录下然后,点击界面底部的“Next>”按钮,进入下一步的完成设置。

    (三)为项目添加需要用到的JAR包

    在File>Project Struecture 中添加引用JAR包

    需要在这个界面中加载该Java工程所需要用到的JAR包,这些JAR包中包含了可以访问HDFS的Java API。这些JAR包都位于Linux系统的Hadoop安装目录下,对于本教程而言,就是在“/usr/local/hadoop/share/hadoop”目录下。点击界面中按钮,

    为了编写一个能够与HDFS交互的Java应用程序,一般需要向Java工程中添加以下JAR包:
    (1)”/usr/local/hadoop/share/hadoop/common”目录下的hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar;
    (2)/usr/local/hadoop/share/hadoop/common/lib”目录下的所有JAR包;
    (3)“/usr/local/hadoop/share/hadoop/hdfs”目录下的haoop-hdfs-2.7.1.jar和haoop-hdfs-nfs-2.7.1.jar;
    (4)“/usr/local/hadoop/share/hadoop/hdfs/lib”目录下的所有JAR包。
    比如,如果要把“/usr/local/hadoop/share/hadoop/common”目录下的hadoop-common-2.7.1.jar和haoop-nfs-2.7.1.jar添加到当前的Java工程中。

    (四)编写Java应用程序代码

    输入新建的Java类文件的名称,这里采用名称“HDFSFileIfExist”,其他都可以采用默认设置,然后,点击界面右下角“OK”按钮,

    创建了一个名为“HDFSFileIfExist.java”的源代码文件,请在该文件中输入以下代码:

    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    public class HDFSFileIfExist {
        public static void main(String[] args){
            try{
                String fileName = "test";
                Configuration conf = new Configuration();
                conf.set("fs.defaultFS", "hdfs://192.168.3.236:9000");  // 这里根据自己实际情况调整
                conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
                FileSystem fs = FileSystem.get(conf);
                if(fs.exists(new Path(fileName))){
                    System.out.println("文件存在");
                }else{
                    System.out.println("文件不存在");
                }
     
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    

    (五)编译运行程序

    在开始编译运行程序之前,请一定确保Hadoop已经启动运行,如果还没有启动,需要打开一个Linux终端,输入以下命令启动Hadoop:

    cd /usr/local/hadoop
    ./sbin/start-dfs.sh
    

    在Project窗口中,选中HDFSFileIfExist类,右键选择run,即可看到结果。 上java代码中,我们设置的判断HDFS中是否含有test名字的文件,可以根据实际情况作调整。

    (六)应用程序的部署

    下面介绍如何把Java应用程序生成JAR包,部署到Hadoop平台上运行。首先,在Hadoop安装目录下新建一个名称为myapp的目录,用来存放我们自己编写的Hadoop应用程序,可以在Linux的终端中执行如下命令:

    cd /usr/local/hadoop
    mkdir myapp
    

    然后,请在Idea工作界面左侧的File > Project Structure,出现如下面示后,再作相应选择:

    然后选择要导出的类

    然后选删除其它依赖类,只留下自己的代码即可


    选择菜单栏的Build,选择Build Artifacts。
    然后测试程序

    cp out/artifacts/HDFSExample_jar/HDFSExample.jar  /usr/local/hadoop/
     ./bin/hadoop jar HDFSExample.jar
    

    我这里输出结果是

    文件不存在
    

    如果在上面导出设置时,不删除依赖类,则用下面的方法也可以运行:

    java -jar ./HDFSExample.jar
    

    得到一样的结果。

  • 相关阅读:
    WPF RichTextbox
    XLT格式化XML那点事(C#代码中的问题解决)(二)
    XML通过XSL格式化的那点事(XML到自定义节点折叠显示)
    C# XML技术总结之XDocument 和XmlDocument
    VS2013问题与解决方法
    Win10 通过升级安装完成后出现了中文字体忽大忽小的问题解决。
    工作这些年对技术学习过程的一些 总结 与 感悟
    C#性能优化考虑的几个方向
    Sql server2012 常见异常处理
    WPF -Enum的三种绑定方法
  • 原文地址:https://www.cnblogs.com/freebird92/p/8908145.html
Copyright © 2020-2023  润新知