在CentOS-x86_64位机器下编译hadoop-2.2.0源码

2026-04-01 15:45:29

1、需要的软件:java, svn, autoconf, automake, libtool, ncurses-devel, openssl-devel, gcc, lzo-devel, zlib-devel, znt, maven, protobuf, cmake

检测系统中是否已安装了某一软件命令:rpm -qa|grep 软件名,如检测系统中是否安装了svn:

$ rpm -qa|grep svn

在CentOS-x86_64位机器下编译hadoop-2.2.0源码

2、如果已安装,则跳过,如果没有安装,用命令:yum install svn进行安装,如:

$ yum install svn

如果yum命令安装失败(找不到相应的包),则需手动下载相应的软件包进行安装,比如maven, protobuf这两个个软件;

1、软件包:apache-maven-3.0.5-bin.tar.gz

不要使用最新的Maven3.1.1,与Maven3.0.x存在兼容性问题,所以老是出现java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter之类的错误。选择3.0.5版本:apache-maven-3.0.5-bin.tar.gz

将apache-maven-3.0.5-bin.tar.gz移动到/usr目录(软件包所在目录):

# mv ./apache-maven-3.0.5-bin.tar.gz /usr

进入/usr目录,解压(/usr目录):

# tar –zxvf apache-maven-3.0.5-bin.tar.gz ./

删除解压后的压缩包(/usr目录):

# rm –rf apache-maven-3.0.5-bin.tar.gz

将/usr / apache-maven-3.0.5/bin加到环境变量中

# vi /etc/profile

在PATH行的最后加上“:/usr/apache-maven-3.0.5/bin”

在CentOS-x86_64位机器下编译hadoop-2.2.0源码

2、使配置生效:

# source /etc/profile

验证是否安装成功:

# mvn –version

若打印以下图相关信息,则成功:

在CentOS-x86_64位机器下编译hadoop-2.2.0源码

1、软件包:protobuf-2.5.0.tar.gz

将protobuf-2.5.0.tar.gz移动到/usr目录(软件包所在目录):

# mv ./ protobuf-2.5.0.tar.gz /usr

进入/usr目录,解压(/usr目录):

# tar –zxvf protobuf-2.5.0.tar.gz ./

删除解压后的压缩包(/usr目录):

# rm –rf protobuf-2.5.0.tar.gz

进入/usr/protobuf-2.5.0目录:

# cd /usr/protobuf-2.5.0

2、依次执行下列命令:

# ./configure

# make

# make check

# make install

检测是否安装成功:

# protoc --version

在CentOS-x86_64位机器下编译hadoop-2.2.0源码

1、在/usr目录进行

用svn下载hadoop-2.2.0源码,命令:

$ svn checkout 'http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0'

源码下载完成后,在/usr目录下会有一个release-2.2.0目录,进入该目录:

$ cd /usr/release-2.2.0

$ ls –la

在CentOS-x86_64位机器下编译hadoop-2.2.0源码

2、编译源码:

$ mvn package -Pdist,native -DskipTests –Dtar --不生成文档

$ mvn package -Pdist,native,docs,src -DskipTests –Dtar --生成文档,需要安装findbugs,并设置FINDBUGS_HOME环境变量

编译的时间比较久,编译过程中会联网下载所需要的包,机子没联网是不会成功编译的。

编译结束,最后打印的信息如下,每一项均是‘SUCCESS’,则编译成功:

在CentOS-x86_64位机器下编译hadoop-2.2.0源码

3、编译好的代码包在/usr/release-2.2.0/hadoop-dist/target目录下:

$ cd /usr/release-2.2.0/hadoop-dist/target

$ ls –la

在CentOS-x86_64位机器下编译hadoop-2.2.0源码

4、因为是在64位系统下编译的,所以编译出来的代码包是64位版本的;可以直接将/usr/release-2.2.0/hadoop-dist/target目录下的hadoop-2.2.0或者hadoop-2.2.0.tar.gz拷贝到其他linux64位平台进行搭建hadoop集群

1、1、Apache Hadoop Auth ................................ FAILURE

最新的2.2.0 的Source Code 压缩包解压出来的code有个bug 需要patch后才能编译。否则编译hadoop-auth 会提示下面错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-auth: Compilation failure: Compilation failure:[ERROR] /home/chuan/trunk/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[84,13] cannot access org.mortbay.component.AbstractLifeCycle[ERROR] class file for org.mortbay.component.AbstractLifeCycle not found

在Apache Hadoop Auth 这一步会失败:

[INFO] Apache Hadoop Auth ................................ FAILURE  [9.266s]

[INFO] Apache Hadoop Auth Examples ....................... SKIPPED

……

……

解决办法:

根据补丁Patch :https://issues.apache.org/jira/browse/HADOOP-10110 所述:

在 /usr/release-2.2.0/hadoop-common-project/hadoop-auth/pom.xml文件中,添加以下内容:

    <dependency>

      <groupId>org.mortbay.jetty</groupId>

      <artifactId>jetty-util</artifactId>

      <scope>test</scope>

</dependency>

2、2、[INFO] Apache Hadoop Pipes ...............................FAILURE [5.295s]

编译Pipes失败,报错信息:

[INFO] Apache Hadoop Pipes ...............................FAILURE [5.295s]

[INFO] Apache Hadoop Tools Dist.......................... SKIPPED

……

一般是未安装ncurses-devel, openssl-devel造成

解决办法:

# yum install ncurses-devel

# yum install openssl-devel

猜你喜欢