环境准备
准备一台centos 64虚拟机
关闭防火墙命令:
service iptables stop
chkconfig iptables off
关闭selinux
vim /etc/selinux/config
创建目录:
mkdir sourcecode software
上传软件包、源码包并解压
安装jdk1.7
!!!!此处必须使用jdk1.7。使用1.8编译会报错
删除自带的jdk
rpm -e java-1.6.0-openjdk-1.6.0.41-1.13.13.1.el6_8.x86_64 tzdata-java-2016j-1.el6.noarch java-1.7.0-openjdk-1.7.0.131-2.6.9.0.el6_8.x86_64
mkdir -p /usr/java
tar -zxvf jdk-7u75-linux-x64.tar.gz -C /usr/java
配置环境变量
export JAVA_HOME=/usr/local/java/jdk1.7.0_75
export PATH=$JAVA_HOME/bin:$PATHsource /etc/profile
安装maven
配置环境变量:
export MAVEN_HOME=/root/software/apache-maven-3.0.5
export MAVEN_OPTS="-Xms1024m -Xmx2048m"
export PATH=$MAVEN_HOME/bin:$PATH
修改配置文件:
/root/software/apache-maven-3.0.5/conf/setting.xml
注意:在编译Hadoop之前还要说明一下,maven编译Hadoop时所需要的两个仓库镜像,一个是Maven中心仓库,另一个是Cloudera 仓库,Maven中心仓库笔者用的是阿里的地址(http://maven.aliyun.com/nexus/content/groups/public/),
Cloudera 仓库地址(https://repository.cloudera.com/artifactory/cloudera-repos/)
Maven在编译Hadoop时需要在这个两个库中找相关依赖,所以要配置好Maven,可以参考网上其它学者的博客。
<localRepository>/root/software/repo</localRepository>
## 编译hadoop需要maven的jar包和cloudera源的包,网络不好会下载比较慢。这里就使用现成的本地repo了
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror>
安装findbugs
配置环境变量
export FINDBUGS_HOME=/root/software/findbugs-1.3.9
export PATH=$FINDBUGS_HOME/bin:$PATH
在线安装依赖包
yum install autoconf automake libtool cmake
yum install ncurses-devel
yum install openssl-devel
yum install lzo-devel zlib-devel gcc gcc-c++
yum install -y bzip2-devel
安装protobuf
cd /root/software/protobuf-2.5.0
./configure --prefix=/usr/local/protobuf ##用来存放一会编译好的protobuf
make && make install
配置环境变量
export PROTOC_HOME=/usr/local/protobuf
export PATH=$PROTOC_HOME/bin:$PATH
安装snappy
cd /root/software/snappy-1.1.1
./configure
make && make install
开始编译
mvn package -DskipTests -Pdist,native -Dtar -Drequire.snappy -e -X
由于使用本地仓库编译的。所以用时比较快。否则则需2~3小时。