hadoop-logo

hadoop2.2.0在64位的机器上需要对源码进行编译(众所周知的槽点),自己比较习惯用centos,不是特别习惯用ubuntu系列。

在centos 6.4 X64下进行编译(我的centos6.4没有使用DVD2的软件iso)遇到了很多问题,也一个个去解决了。

自己进行编译能加深自己的印象。

一、准备工作:

机器需要联网!!!!!

软件包准备如下图:【文章后附下载链接,不建议使用git或者svn获取,太慢了

红框的是需要的:其中CentOS6-Base.repo是我替换的163的yum源。

JDK一定要是64位的,我一开始没注意,忘记了。。

hadoop-com-1

上传后,全部解压:tar -zxvf  xxx.tar.gz,把tar包删掉或者移走即可。

我都解压在 /opt/software/中了,因为后面配置变量的时候需要用,所以文件夹名称是需要确定的(我自己懒得改了)

hadoop-com-2

二、安装一堆可能需要的软件

最好全部安装,我因为少安装了一个,导致maven一直有错误。

yum -y install gcc* cmake glibc-headers  gcc-c++ zip-devel openssl-devel ncurses-devel lzo-devel autoconf libtool automake svn git

打patch

patch也是必须打得:

patch: https://issues.apache.org/jira/browse/HADOOP-10110

命令如下

wget https://issues.apache.org/jira/secure/attachment/12614482/HADOOP-10110.patch; patch -p0 < HADOOP-10110.patch 

三、安装JDK(64位)

解压后添加环境变量即可

主要需要注意文件路径

每次编辑 /etc/profile都可以使用 source /etc/profile 生效,下面都是如此

##Java 1.7 x64
export JAVA_HOME=/opt/software/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

 四、安装Maven

安装其实很简单,解压之后编辑环境变量就行了。

mvn -version 可以查看版本

## Maven
export MAVEN_HOME=/opt/software/apache-maven-3.0.5
export PATH=$PATH:$MAVEN_HOME/bin

需要注意的是,Maven的源要替换掉,不然速度可能会让你崩溃的。

之前比较出名的是maven.oschina,但是好像挂掉了,我换成阿里云的,贼快。

编辑 maven目录下的/etc/conf/setting.xml

在mirrors下添加mirror即可

<mirror>  
    <id>nexus-aliyun</id>  
    <mirrorOf>central</mirrorOf>    
    <name>Nexus aliyun</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>  
</mirror>

 五、安装Ant、Findbugs

ant -version 可以验证一下

因为都一样配置环境变量即可,别的没啥。

## Ant
export ANT_HOME=/opt/software/apache-ant-1.9.4
export PATH=$PATH:$ANT_HOME/bin

## Findbugs
export FINDBUGS_HOME=/opt/software/findbugs-3.0.1
export PATH=$PATH:$FINDBUGS_HOME/bin

六、安装Protoc

单独拿出来是因为需要进行make,而且我遇到了一个没解决的问题,但这个问题没有啥影响

  1. ./configure 
    1. 我遇到的问题是 configure 是可以指定目录的,但是我指定目录之后make总是不成功,无法生成文件
    2. 我认为是我之前./configure的时候用了默认的目录做过一次,但是删除文件也没成功
    3. 理论上./configure --prefix= ... 是可以指定的,具体可以百度。
    4. 因此我的环境变量使用的是默认路径
  2. make && make install

环境变量的配置(配的默认路径):

## protoc
export PROTOC_HOME=/usr/local/
export PATH=$PATH:$PROTOC_HOME/bin

protoc --version 可以验证一下

七、开始编译Hadoop

上面工作做好了,就可以使用mvn编译hadoop了

为了保险起见,直接设置 内存:

export MAVEN_OPTS="Xms256m -Xmx512m"

然后进行编译

mvn clean package -DskipTests -Pdist,native -Dtar

我在编译的过程中遇到了maven-antrun-plugin的报错,解决办法

在源代码根目录的pom.xml中查找 <artifacId>maven-antrun-plugin</artifacId>的节点,如果version写了1.6改成1.7,虽然java向前兼容,但是还是能避免就避免。

在version下面追加如下:

需要注意的是version需要和安装的maven相同

              <dependencies>
            <dependency>
                  <groupId>org.codehaus.plexus</groupId>
                  <artifactId>plexus-utils</artifactId>
                  <version>2.0.5</version>
              </dependency>
              <dependency>
                    <groupId>org.apache.ant</groupId>
                     <artifactId>ant</artifactId>
                     <version>1.9.4</version>
                </dependency>
        </dependencies>

这个问题解决办法我实在:http://www.cnblogs.com/yjmyzz/p/4455111.html看到的,非常感谢。

上面还有别的一些问题,也可以参考一下。

八、编译结果

最后的成功的目录是:hadoop-2.2.0-src.tar.gz/hadoop-dist/target/

上面的过程我从发现问题到解决问题花了挺久的时间,主要是maven一开始我没有替换下载源,太慢了,而且动不动就死掉。

替换了下载源后,如果发现还是有的包下载不下来,可以ctrl+c停止,再重新来一次mvn,之前下好的就不会再次下,我这样子折腾了好多次,才下好。

替换了maven的下载源后,最好重启一下。

我重启了一次,很快就编译好了。

祝你好运。

九、相关工工具包和我编译好的

编译工具包:

百度云盘地址:http://pan.baidu.com/s/1pLEVCGN

验证:3h74

编译完成的tar包:

百度云盘地址:http://pan.baidu.com/s/1qYs8Xze

验证:hsce