大数据笔记(三):IDEA下使用Maven工程与HDFS进行简单交互

最近在看厦大林子雨老师的mooc,3.6讲使用Eclipse开发环境与HDFS进行交互,我比较喜欢IDEA的风格,这篇blog记录了在使用IDEA时踩过的坑。

配置Maven环境

  1. Maven是什么?
    Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具。(我的理解:通过pom.xml自动下载jar包并优化协作开发共享包的插件,而不用手动去导入jar包)
  2. 下载 Maven
  3. 单步执行以下命令
    $ cd Downloads    #进入下载文件夹
    $ sudo tar -zxvf apache-maven-3.6.1-bin.tar.gz -C /usr/local  #解压
    $ cd /usr/local  #进入解压后的目录
    $ sudo mv apache-maven-3.6.1 maven  #重命名
    $ sudo gedit ~/.bashrc #添加环境变量
    
  4. 环境变量中添加
    #maven
    export M2_HOME=/usr/local/maven
    export CLASSPATH=$CLASSPATH:$M2_HOME/lib
    export PATH=$PATH:$M2_HOME/bin
    
    大数据笔记(三):IDEA下使用Maven工程与HDFS进行简单交互_第1张图片
    $ source ~/.bashrc  #刷新环境变量配置
    $ mvn -v #查看Maven版本
    
    如图出现版本号则安装成功大数据笔记(三):IDEA下使用Maven工程与HDFS进行简单交互_第2张图片

创建Maven工程

  1. IDEA中NewProject创建Maven
    大数据笔记(三):IDEA下使用Maven工程与HDFS进行简单交互_第3张图片
  2. pom.xml中填入以下内容(需要Maven加载的jar包集合)
    <dependencies>
            <dependency>
                <groupId>org.apache.hadoopgroupId>
                <artifactId>hadoop-commonartifactId>
                <version>2.7.1version>
            dependency>
            <dependency>
                <groupId>org.apache.hadoopgroupId>
                <artifactId>hadoop-hdfsartifactId>
                <version>2.7.1version>
            dependency>
            <dependency>
                <groupId>org.apache.hadoopgroupId>
                <artifactId>hadoop-clientartifactId>
                <version>2.7.1version>
            dependency>
        dependencies>
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <artifactId>maven-clean-pluginartifactId>
                        <version>3.0.0version>
                    plugin>
                    <plugin>
                        <artifactId>maven-resources-pluginartifactId>
                        <version>3.0.2version>
                    plugin>
                    <plugin>
                        <artifactId>maven-compiler-pluginartifactId>
                        <version>3.7.0version>
                    plugin>
                    <plugin>
                        <artifactId>maven-surefire-pluginartifactId>
                        <version>2.20.1version>
                    plugin>
                    <plugin>
                        <artifactId>maven-jar-pluginartifactId>
                        <version>3.0.2version>
                        <configuration>
                            <archive>
                                <manifest>
                                    <addClasspath>trueaddClasspath>
                                    <classpathPrefix>libclasspathPrefix>
                                    <mainClass>cn.itcast.hdfs.TestHdfsClientmainClass>
                                manifest>
                            archive>
                        configuration>
                    plugin>
                    <plugin>
                        <artifactId>maven-install-pluginartifactId>
                        <version>2.5.2version>
                    plugin>
                    <plugin>
                        <artifactId>maven-deploy-pluginartifactId>
                        <version>2.8.2version>
                    plugin>
                plugins>
            pluginManagement>
        build>
    
  3. 右下角开始导入
    大数据笔记(三):IDEA下使用Maven工程与HDFS进行简单交互_第4张图片

导入HDFS配置文件

将Hadoop目录中(usr/local/hadoop/etc/hadoopcore-site.xmlhdfs-site.xml复制到工程中的resources
大数据笔记(三):IDEA下使用Maven工程与HDFS进行简单交互_第5张图片

创建测试类``

该测试类的功能是测试HDFS中user/hadoop下是否存在test.txt文件,目前是不存在的

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class HadoopTest {
    public static void main(String[] args) {
        try {
            String filename = "hdfs://localhost:9000/user/hadoop/test.txt";
            Configuration conf = new Configuration();
            FileSystem fs = FileSystem.get(conf);
            if(fs.exists(new Path(filename))){
                System.out.println("文件存在");
            }else{
                System.out.println("文件不存在");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

测试结果:
大数据笔记(三):IDEA下使用Maven工程与HDFS进行简单交互_第6张图片
上传test.txt至hdf的user/hadoop下:
大数据笔记(三):IDEA下使用Maven工程与HDFS进行简单交互_第7张图片
重新运行HadoopTest:
大数据笔记(三):IDEA下使用Maven工程与HDFS进行简单交互_第8张图片

结语:使用Maven能高效的管理项目中所需要的jar包,免去手动导入的麻烦。

你可能感兴趣的:(大数据学习)