1.参考资料
官方的https://github.com/apache/hadoop/blob/trunk/BUILDING.txt
2.编译环境
Linux系统:Centos7.2
Jdk版本:jdk1.8
cmake版本:3.19
Hadoop版本:3.1.2
Maven版本:3.6.3
Protobuf版本:2.5
编译工具准备
a.安装依赖
1 |
|
b. java 和maven 环境
java 和maven 环境用到的太普遍了,这个就不重复了
c.安装protobuf
可以先查看yum上的版本
2.5.0正是所需要的,而不是官方里说的3.x,为什么呢?
直接
1 |
|
自己安装时,以为yum没有protobufx,所以是到github上下载源码编译的GitHub - protocolbuffers/protobuf at v2.5.0
正常解压后只要
1 2 3 4 |
|
但你会发现根本没有configure,我们需要执行autogen.sh去生成configure脚本
执行autogen.sh,会发现无法下载gtest-1.5.0.tar.bz2
我们需要自行下载gtest-1.5.0.tar.bz2,
Index of /repo/pkgs/gtest/gtest-1.5.0.tar.bz2/md5/8b2c3c3f26cb53e64a3109d03a97200a
再执行autogen.sh里剩下的部分
生成configure
d.安装CMake 3.19
1 2 3 4 5 |
|
3.下载hadoop源码进行编译
源码下载GitHub - apache/hadoop: Apache Hadoop
注意为了更好的性能,要使用 Native Hadoop Library
Native Hadoop Library 介绍:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/NativeLibraries.html
解压后 ,cd hadoop-3.2.2-src
执行
1 |
|
编译中可能因为网络问题,有些包无法下载
可以自行到中央仓库Central Repository:下载相应jar包,
并先删除本地仓库中相应包目录下的缓存文件,再用maven安装到本地,再编译源码。
我遇到了2个jar无法下载,所以本地安装了下。
1 2 3 4 5 6 |
|
4.编译成功