官网地址:https://archive.apache.org/dist/hadoop/common/
根据个人实际情况选择合适的tar包,这里我们选择hadoop-2.9.2-src.tar.gz
上传到Linux服务器,解压并查看BUILDING.txt文件。
tar -xvf hadoop-2.9.2-src.tar.gz
根据BUILDING.txt文件内容,我们首先准备相关编译环境
Requirements:
上传相关tar包到指定路径,解压并配置环境变量
##解压文件到指定位置
tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/
##修改配置文件vim /etc/profile,末尾新增
export JAVA_HOME=/opt/jdk1.8.0_162
export PATH=$JAVA_HOOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
##使配置生效
[root@hadoop01 jdk1.8.0_162]# source /etc/profile
##检查是否生效
[root@hadoop01 jdk1.8.0_162]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
上传相关tar包到指定路径,解压并配置环境变量
##解压文件到指定位置
tar -zxvf apache-maven-3.6.0-bin.tar.gz -C /opt/
##修改配置文件vim /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_162
export MAVEN_HOME=/opt/apache-maven-3.6.0
export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
##使配置生效
[root@hadoop01 apache-maven-3.6.0]# source /etc/profile
##检查是否生效
[root@hadoop01 apache-maven-3.6.0]# mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /opt/apache-maven-3.6.0
Java version: 1.8.0_162, vendor: Oracle Corporation, runtime: /opt/jdk1.8.0_162/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
修改settings.xml配置文件,将远程仓库换成国内阿里云镜像仓库,提高效率。
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
注意:这里明确指定了版本信息,我们下载对应版本。
官网地址:https://sourceforge.net/projects/findbugs/files/findbugs/1.3.9/
##解压文件到指定位置
tar -zxvf findbugs-1.3.9.tar.gz -C /opt/
##修改配置文件vim /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_162
export MAVEN_HOME=/opt/apache-maven-3.6.0
export FINDBUGS_HOME=/opt/findbugs-1.3.9
export PATH=$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
##使配置生效
[root@hadoop01 findbugs-1.3.9]# source /etc/profile
##检查是否生效
[root@hadoop01 findbugs-1.3.9]# findbugs -version
1.3.9
官网地址:https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0
##解压文件到指定位置
[root@hadoop01 tools]# tar -zxvf protobuf-2.5.0.tar.gz
注意:这里需要提前安装gcc等相关依赖,否则在编译的过程中会报错。
[root@hadoop01 protobuf-2.5.0]# yum -y install gcc gcc-c++
[root@hadoop01 protobuf-2.5.0]# yum install -y autoconf automake libtool curl
错误信息如下
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/opt/tools/protobuf-2.5.0':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
安装好依赖库之后继续执行
##编译到指定路径
[root@hadoop01 protobuf-2.5.0]# ./configure --prefix=/opt/protobuf-2.5.0
[root@hadoop01 protobuf-2.5.0]# make
[root@hadoop01 protobuf-2.5.0]# make install
##查看是否编译成功
[root@hadoop01 ~]# ls /opt/protobuf-2.5.0/
bin include lib
##修改配置文件vim /etc/profile
export JAVA_HOME=/opt/jdk1.8.0_162
export MAVEN_HOME=/opt/apache-maven-3.6.0
export FINDBUGS_HOME=/opt/findbugs-1.3.9
export PROTOC_HOME=/opt/protobuf-2.5.0
export PATH=$PROTOC_HOME/bin:$FINDBUGS_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
##使配置生效
[root@hadoop01 protobuf-2.5.0]# source /etc/profile
##检查是否生效
[root@hadoop01 protobuf-2.5.0]# protoc --version
libprotoc 2.5.0
根据Building.txt说明,还需要安装相关依赖。
[root@hadoop01 opt]# yum -y install cmake zlib-devel openssl openssl-devel
[root@hadoop01 conf]# cd /opt/hadoop-2.9.2-src/
##执行编译
[root@hadoop01 hadoop-2.9.2-src]# mvn clean package -Pdist,native -DskipTests -Dtar
##耐心等待编译成功
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16:09 min
[INFO] Finished at: 2019-08-09T19:03:59+08:00
[INFO] ------------------------------------------------------------------------
在Hadoop源码编译成功之后,进入hadoop-2.9.2-src的hadoop-dist/target目录,可以看到我们编译成功的Hadoop文件。
[root@hadoop01 target]# cd /opt/hadoop-2.9.2-src/hadoop-dist/target/
[root@hadoop01 target]# ll -h
总用量 898M
drwxr-xr-x. 2 root root 28 8月 9 19:02 antrun
drwxr-xr-x. 3 root root 22 8月 9 19:02 classes
-rw-r--r--. 1 root root 2.2K 8月 9 19:02 dist-layout-stitching.sh
-rw-r--r--. 1 root root 634 8月 9 19:03 dist-tar-stitching.sh
drwxr-xr-x. 9 root root 149 8月 9 19:03 hadoop-2.9.2
-rw-r--r--. 1 root root 299M 8月 9 19:03 hadoop-2.9.2.tar.gz
-rw-r--r--. 1 root root 31K 8月 9 19:03 hadoop-dist-2.9.2.jar
-rw-r--r--. 1 root root 599M 8月 9 19:03 hadoop-dist-2.9.2-javadoc.jar
-rw-r--r--. 1 root root 29K 8月 9 19:03 hadoop-dist-2.9.2-sources.jar
-rw-r--r--. 1 root root 29K 8月 9 19:03 hadoop-dist-2.9.2-test-sources.jar
drwxr-xr-x. 2 root root 51 8月 9 19:03 javadoc-bundle-options
drwxr-xr-x. 2 root root 28 8月 9 19:03 maven-archiver
drwxr-xr-x. 3 root root 22 8月 9 19:02 maven-shared-archive-resources
drwxr-xr-x. 3 root root 22 8月 9 19:02 test-classes
drwxr-xr-x. 2 root root 6 8月 9 19:02 test-dir
最常见的情况就是编译过程中下载某个jar包或者pom文件的时候卡死,建议clean之后重新编译。