用maven编译hadoop程序
Maven是一个强大的Java项目构建和管理的工具。用maven来编译和打包hadoop的程序非常方便。其具操作如下:
(1) 下载基于windows的maven并安装
maven的下载地址为:http://apache.dataguru.cn/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.zip
下载安装之后,需将maven的可执行程序的路径加到系统路径中,具体操作步骤为:对“我的电脑”点右键-->选择“属性”-->选择"高级系统设置"-->选择“环境变量”-->在“用户环境变量”中选择“PATH”,再选择编辑,然后将maven的可执行程序的路径加上。然后点“确定”。
(2)修改setting.xml文件
setting.xml文件在maven的安装目录下的conf目录中,这个文件保存了与maven相关的属性。其中有一个属性为localRepository,它用来指定maven仓库(Repository)的位置。maven仓库是用来保存与编译代码包。maven在编译代码时,没有发现需要的包,就会从网上下载,并保存到这个属性所指定的目录;如果在这个目录能找到相应的包,则直接编译。
可以这样设置localRepository属性:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>../repository</localRepository>
然后建一个与conf平级(就是与conf在同一级)的目录repository。注意,<!--与-->之间的内容为注释。
配置好后,可以在windows的命令行执行 mvn -version,如果没有报错,就表示mvn安装成功。
(3)编写POM文件
POM是项目对象模型(project object model),它通过xml来表示maven项目,POM文件通常命名为pom.xml。它主要描述项目如下几个方面的内容:配置文件;开发者需要遵循的规则;缺陷管理系统;组织和licenses;项目的url;项目的依赖性;以及其他所有的项目相关因素。
用maven来编译与hadoop相关的代码,其pom.xml文件的内容为:
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hadoopbook</groupId>
<artifactId>ch02</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Chapter 2: MapReduce</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.4.1</version>
</dependency>
</dependencies>
</project>
其中,<dependencies>指定了项目依赖的包。上面的xml说明项目需要依赖三个包:hadoop-common,hadoop-hdfs,hadoop-client。这三个包的版本都是2.4.1。
(4)组织要编译的hadoop代码
在pom.xml文件所在的目录中,建立一个src目录,然再在src目录下建立main目录,在main目录下建立java目录,并将hadoop代码放到java目录下。这里用《hadoop权威指南》第二章的代码作为要编译的hadoop应用程序代码。
1) 进入windows的命令行,并进入pom.xml文件所在的目录。
2) 然后执行:mvn compile,如果是第一次执行这个命令,会看到maven从网上下载与编译代码相关的包(就是在pom.xml的<dependencies>中指定的那些包)。这个命令是将源代码编译成目标代码(二进制代码)。
3) 接下用mvn package进行打包。
4)在pom.xml文件所在的目录中,有一个target子目录,打好的包就存放在这个目录。笔者机器上生成的包为ch02-1.0-SNAPSHOT.jar
(5)上传文件到hadoop集群上,并执行
将第(4)得到的jar包(ch02-1.0-SNAPSHOT.jar)上传到hadoop集群。然后执行:
hadoop jar /root/hadoop/ch02-1.0-SNAPSHOT.jar MaxTemperature ./sample.txt output
这里需要注意,sample.txt文件必须要传到hdfs的/user/root目录下,因为笔者是以root来执行这条命令的。output目录位于/user/root下,且来存放运行结果。
浙公网安备 33010602011771号