Hadoop+idea+maven开发配置

来源:互联网 发布:淘宝电脑整机 编辑:程序博客网 时间:2024/05/16 14:07
idea是java开发的利器之一,其自身集成了maven,十分适用于大型项目的开发。大多数的Hadoop程序都是在idea下开发的,本文介绍了Hadoop+idea+maven的环境配置与开发测试

准备

  1. 在ubuntu下安装Hadoop,具体细节可见之前的博客
  2. 安装idea

建立项目

  1. 打开idea,选择 File---New---Project---Maven,接下来填写GroupId和ArtifactId,之后是项目名称和位置等等
  2. 新建项目后有提示 Maven project need to be imported ,选择导入
  3. 我们需要修改pom.xml文件,添加包的依赖关系。
    <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>cn.yanjun.bigdata</groupId>    <artifactId>bigdata</artifactId>    <version>1.0-SNAPSHOT</version>    <repositories>        <repository>            <id>apache</id>            <url>http://maven.apache.org</url>        </repository>    </repositories>    <dependencies>        <dependency>            <groupId>org.apache.hadoop</groupId>            <artifactId>hadoop-core</artifactId>            <version>1.2.1</version>        </dependency>        <dependency>            <groupId>org.apache.hadoop</groupId>            <artifactId>hadoop-common</artifactId>            <version>2.7.2</version>        </dependency>    </dependencies></project>

  4. 接下来开始写代码,测试代码很简单,将输入目录下的所有文件顺序读入一个hdfs的输出文件中。在src/main/java 中建立PutMerge.class,代码内容如下
    import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import java.io.IOException;/** * Created by lyj on 10/26/16. */public class PutMerge {    public static void main(String[] args) throws IOException{        Configuration conf=new Configuration();        FileSystem hdfs = FileSystem.get(conf);        LocalFileSystem local = FileSystem.getLocal(conf);        Path inputDir=new Path(args[0]);        Path outFile=new Path(args[1]);        try{            FileStatus[] fileStatuses = local.listStatus(inputDir);            FSDataOutputStream fsDataOutputStream = hdfs.create(outFile);            for (int i = 0; i < fileStatuses.length; i++) {                System.out.println(fileStatuses[i].getPath().getName());                FSDataInputStream in = local.open(fileStatuses[i].getPath());                byte [] buffer=new byte[1024];                int len=0;                while((len=in.read(buffer))>0){                    fsDataOutputStream.write(buffer,0,len);                }                in.close();            }            fsDataOutputStream.close();        }catch(Exception e){            e.printStackTrace();        }    }}

  5. 接下来开始生成文件jar包,选择File---Project Structure---Artifacts,点击 +号,选择jar ,From modules with dependencies  ,然后选择main class 确定。然后点击build---build artifacts---build或者rebuild 。在out/artifacts目录下就能发现生成的jar包了,接下来我们测试一下生成的jar包。

测试jar包


  1. 在项目根目录下建立输入文件目录in,里面存放任意文件,然后在shell里面输入   
    hadoop jar out/artifacts/FirstHadoopCode_jar/FirstHadoopCode.jar PutMerge ./in ./res.txt
    这句命令将in目录下的文件读取并输出到hdfs根目录下的res.txt文件中。运行之后可以看到in目录下的文件名被输出了
    然后我们查看下hdfs根目录
     hdfs dfs -cat res.txt
    结果输出了三个文件的所有内容。

使用mvn命令生成jar包

  1. 习惯使用maven命令的同学也可以使用maven的命令生成jar包
    mvn compile
    mvn package
  2. 然后在target目录下可以看到生成的jar包,
    hadoop jar target/FirstHadoopCode.jar PutMerge ./in ./res.txt
0 0
原创粉丝点击