Hadoop源码编译
1. 前期准备工作
1.1 官网下载源码
https://hadoop.apache.org/release/3.3.6.html
1.2 CentOS虚拟机准备
- 提供Linux服务器能够联网
提示
采用root角色编译,减少文件夹权限出现问题
- 压缩包准备
- hadoop-3.3.6-src.tar.gz
- jdk-8u391-linux-x64.tar.gz
- apache-maven-3.9.6-bin.tar.gz
- protobuf-all-21.12.tar.gz(序列化的框架)
- cmake-3.28.3.tar.gz
分别创建/opt/software/hadoop_source、/opt/module/hadoop_source路径
sh
[root@hadoop105 ~]# mkdir /opt/software/hadoop_source /opt/module/hadoop_source
## 上传上述软件包到指定的目录/opt/software/hadoop_source
[root@hadoop105 hadoop_source]# ll
总用量 101808
-rw-r--r--. 1 root root 9410508 3月 5 14:31 apache-maven-3.9.6-bin.tar.gz
-rw-r--r--. 1 root root 51671447 3月 5 14:27 cmake-3.28.3.tar.gz
-rw-r--r--. 1 root root 37278863 3月 5 14:08 hadoop-3.3.6-src.tar.gz
-rw-r--r--. 1 root root 5878962 3月 5 14:29 protobuf-all-21.12.tar.gz
## 解压软件包指定的目录/opt/module/hadoop_source
[root@hadoop105 hadoop_source]# tar -xvf apache-maven-3.9.6-bin.tar.gz -C /opt/module/hadoop_source/
[root@hadoop105 hadoop_source]# tar -xvf cmake-3.27.9-linux-x86_64.tar.gz -C /opt/module/hadoop_source/
[root@hadoop105 hadoop_source]# tar -xvf hadoop-3.3.6-src.tar.gz -C /opt/module/hadoop_source/
[root@hadoop105 hadoop_source]# tar -xvf protobuf-all-21.12.tar.gz -C /opt/module/hadoop_source/
[root@hadoop105 hadoop_source]# cd /opt/module/hadoop_source/
[root@hadoop105 hadoop_source]# ll
总用量 8
drwxr-xr-x. 6 root root 99 3月 5 14:33 apache-maven-3.9.6
drwxr-xr-x. 6 root root 52 3月 5 14:34 cmake-3.28.3
drwxr-xr-x. 20 root root 4096 6月 18 2023 hadoop-3.3.6-src
drwxrwxr-x. 28 root root 4096 2月 16 02:57 protobuf-21.12
2. 安装JDK
sh
[root@hadoop105 hadoop_source]# tar -xvf cmake-3.28.3.tar.gz -C /opt/module/hadoop_source/
## 配置环境变量
[root@hadoop105 jdk1.8.0_391]# vim /etc/profile.d/hadoop_env.sh
输入如下内容:
#JAVA_HOME
export JAVA_HOME=/opt/module/hadoop_source/jdk1.8.0_391
export PATH=$PATH:$JAVA_HOME/bin
###刷新JDK环境变量
[root@hadoop105 jdk1.8.0_391]# source /etc/profile
验证JDK是否安装成功
[root@hadoop105 hadoop_source]# java -version
java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_391-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)
3. 配置maven环境变量
sh
[root@hadoop105 hadoop_source]# vim /etc/profile.d/hadoop_env.sh
#MAVEN_HOME
export MAVEN_HOME=/opt/module/hadoop_source/apache-maven-3.9.6
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
[root@hadoop105 hadoop_source]# source /etc/profile
修改maven的镜像
sh
[root@hadoop105 apache-maven-3.6.3]# vi conf/settings.xml
3.1 在mirrors节点中添加阿里云镜像
xml
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
3.2 验证maven安装是否成功
sh
[root@hadoop105 module]# mvn -version
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: /opt/module/hadoop_source/apache-maven-3.9.6
Java version: 1.8.0_391, vendor: Oracle Corporation, runtime: /opt/module/jdk1.8.0_391/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.105.1.el7.x86_64", arch: "amd64", family: "unix"
4. 安装相关的依赖
4.1 安装gcc make
sh
[root@hadoop105 module]# yum install -y gcc* make
4.2 安装压缩工具
sh
[root@hadoop105 module]# yum -y install snappy* bzip2* lzo* zlib* lz4* gzip*
4.3 安装一些基本工具
sh
[root@hadoop105 module]# yum -y install openssl* svn ncurses* autoconf automake libtool
4.4 安装扩展源,才可安装zstd
sh
[root@hadoop105 hadoop_source]# yum -y install epel-release
[root@hadoop105 hadoop_source]# yum -y install *zstd*
5. 手动安装cmake
5.1 在解压好的cmake目录下,执行./bootstrap进行编译
sh
[root@hadoop105 cmake-3.28.3]$ pwd
/opt/module/hadoop_source/cmake-3.28.3
[root@hadoop105 cmake-3.28.3]$ ./bootstrap
5.2 执行安装
sh
[root@hadoop105 cmake-3.28.3]$ make && make install
5.3 验证安装是否成功
sh
[root@hadoop105 cmake-3.28.3]# cmake -version
cmake version 3.28.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
6. 安装protobuf
sh
[root@hadoop105 protobuf-21.12]$ pwd
/opt/module/hadoop_source/protobuf-21.12
- 依次执行下列命令 --prefix 指定安装到当前目录
sh
[root@hadoop105 protobuf-21.12]# ./autogen.sh
[root@hadoop105 protobuf-21.12]$ ./configure --prefix=/opt/module/hadoop_source/protobuf-21.12
[root@hadoop105 protobuf-21.12]$ make && make install
- 配置环境变量
sh
[root@hadoop105 protobuf-21.12]$ vi /etc/profile.d/hadoop_env.sh
输入如下内容
PROTOC_HOME=/opt/module/hadoop_source/protobuf-21.12
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$PROTOC_HOME/bin
- 验证
sh
[root@hadoop105 protobuf-21.12]$ source /etc/profile
[root@hadoop105 protobuf-21.12]# protoc --version
libprotoc 3.21.12
7. 编译源码
- 进入解压后的Hadoop源码目录下
sh
[root@hadoop105 hadoop-3.3.6-src]$ pwd
/opt/module/hadoop_source/hadoop-3.3.6-src
#开始编译
[root@hadoop105 hadoop-3.3.6-src]$ mvn clean package -DskipTests -Pdist,native -Dtar
信息
第一次编译需要下载很多依赖jar包,编译时间会很久,预计1小时左右,最终成功是全部SUCCESS
- 成功的64位hadoop包在/opt/module/hadoop_source/hadoop-3.3.6-src/hadoop-dist/target下
sh
[root@hadoop105 target]# pwd
/opt/module/hadoop_source/hadoop-3.3.6-src/hadoop-dist/target