Skip to content

Hadoop源码编译

1. 前期准备工作

1.1 官网下载源码

https://hadoop.apache.org/release/3.3.6.htmlAlt text

1.2 CentOS虚拟机准备

  1. 提供Linux服务器能够联网

提示

采用root角色编译,减少文件夹权限出现问题

  1. 压缩包准备
  • 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
  1. 依次执行下列命令 --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
  1. 配置环境变量
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
  1. 验证
sh
[root@hadoop105 protobuf-21.12]$ source /etc/profile
[root@hadoop105 protobuf-21.12]# protoc --version
libprotoc 3.21.12

7. 编译源码

  1. 进入解压后的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

  1. 成功的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