版权属于: Postbird - There I am , in the world more exciting!
原文地址: http://www.ptbird.cn/centos64-hadoop-src.html
转载时必须以链接形式注明原始出处及本声明。
hadoop2.2.0在64位的机器上需要对源码进行编译(众所周知的槽点),自己比较习惯用centos,不是特别习惯用ubuntu系列。
在centos 6.4 X64下进行编译(我的centos6.4没有使用DVD2的软件iso)遇到了很多问题,也一个个去解决了。
自己进行编译能加深自己的印象。
一、准备工作:
机器需要联网!!!!!
软件包准备如下图:【文章后附下载链接,不建议使用git或者svn获取,太慢了】
红框的是需要的:其中CentOS6-Base.repo是我替换的163的yum源。
JDK一定要是64位的,我一开始没注意,忘记了。。
上传后,全部解压:tar -zxvf xxx.tar.gz,把tar包删掉或者移走即可。
我都解压在 /opt/software/中了,因为后面配置变量的时候需要用,所以文件夹名称是需要确定的(我自己懒得改了)
二、安装一堆可能需要的软件
最好全部安装,我因为少安装了一个,导致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,而且我遇到了一个没解决的问题,但这个问题没有啥影响
- ./configure
- 我遇到的问题是 configure 是可以指定目录的,但是我指定目录之后make总是不成功,无法生成文件
- 我认为是我之前./configure的时候用了默认的目录做过一次,但是删除文件也没成功
- 理论上 ./configure –prefix= … 是可以指定的,具体可以百度。
- 因此我的环境变量使用的是默认路径
- 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的下载源后,最好重启一下。
我重启了一次,很快就编译好了。
祝你好运。
九、相关工工具包和我编译好的