CentOS7下Hadoop-3.2.1源码编译
为了避免踩坑建议先查看Hadoop源码包中的BUILDING.txt文本里面说明了各个系统平台下的环境需求准备本次是在CentOS7下所以只展示相关环境
- Unix System
* JDK 1.8 (必须)
* Maven 3.3 or later (必须)
* ProtocolBuffer 2.5.0 (必须且必须是这个版本)
* CMake 3.1 or newer (if compiling native code) (必须,yum安装或者下载tar包解压都行,后面有具体操作)
* Zlib devel (if compiling native code) (本人在实际操作的时候是必须要装的,但是在低版本的Hadoop貌似是不需要)
* Cyrus SASL devel (if compiling native code)
* One of the compilers that support thread_local storage: GCC 4.8.1 or later, Visual Studio,
Clang (community version), Clang (version for iOS 9 and later) (if compiling native code)
* openssl devel (if compiling native hadoop-pipes and to get the best HDFS encryption performance)(需要,直接使用yum源安装即可)
* Linux FUSE (Filesystem in Userspace) version 2.6 or above (if compiling fuse_dfs)(以下都不需要管)
* Doxygen ( if compiling libhdfspp and generating the documents )
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
* python (for releasedocs)
* bats (for shell code testing)
* Node.js / bower / Ember-cli (for YARN UI v2 building)
1、前期必须环境准备
- hadoop-3.2.1-src.tar.gz
- jdk-8u261-linux-i586.tar.gz
- apache-maven-3.6.3-bin.tar.gz
- apache-ant-1.9.15-bin.tar.gz
- cmake-3.1.0.tar.gz
- v1.2.11.tar.gz(Zlib)
- protobuf-2.5.0.tar.gz
说明:上面所有链接都是官方下载地址,除jdk之外全是直接点击即可下载,也可以鼠标右击复制链接地址然后直接使用wget命令直接下载到服务器上,各个环境版本最好保持一致,大版本一致就行比如jdk只要是java8就行,除了protobuf必须使用2.5.0版本,否则会出错,其他的在上面说的官方要求中可以看到
2、安装环境
- jdk安装
解压tar包到指定目录
tar -zxvf jdk-8u261-linux-i586.tar.gz -C /usr/local/software
配置环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/software/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
立即生效
source /etc/profile
输入 java -version javac java
三个命令验证是否安装成功
- maven安装
解压tar包到指定目录
tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/local/software
配置环境变量
vim /etc/profile
export MAVEN_HOME=/usr/local/software/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
立即生效
source /etc/profile
输入mvn -v 验证是否安装成功
- ant安装
解压tar包到指定目录
tar -zxvf apache-ant-1.9.15-bin.tar.gz -C /usr/local/software
配置环境变量
vim /etc/profile
export ANT_HOME=/usr/local/software/apache-ant-1.9.15
export PATH=$ANT_HOME/bin:$PATH
立即生效
source /etc/profile
输入ant -version 验证是否安装成功
- cmake安装
安装cmake之前需要先安装cmake的依赖环境make、glibc-headers、g++、openssl-devel
yum install make
yum install glibc-headers
yum install g++
yum install openssl-devel
解压tar包到指定目录
tar -zxvf cmake-3.1.0.tar.gz -C /usr/local/software
然后进入cmake目录执行一下命令将cmake进行编译
./bootstrap
make && make install
然后还是最简单的配置环境变量
vim /etc/profile
export CMAKE_HOME=/usr/local/software/cmake-3.1.0
export PATH=$CMAKE_HOME/bin:$PATH
立即生效
source /etc/profile
输入cmake -version验证是否成功
这里要说说明一下cmake直接使用yum源安装的话版本可能不符合要求,直接更新也可以只要达到开头说的Hadoop所要求的版本就行,如果是或者2.x版本的话就可以直接使用yum源安装的cmake
- zlib安装
解压tar包到指定目录
tar -zxvf v1.2.11.tar.gz -C /usr/local/software
进入zlib目录进行编译
- -prefix 指定安装位置
./configure --prefix=/usr/local/software/zlib
make
make install
配置环境变量,将指定的安装目录配置进去
export ZLIB_HOME=/usr/local/software/zlib
export PATH=$ZLIB_HOME:$PATH
立即生效
source /etc/profile
zlib这个东西在Hadoop-3.1.x之前的版本进行源码编译是不需要安装的,但是本人在Hadoop3.2.x版本搞了一天最后安装了个zlib就成了,有知道的小伙伴麻烦给讲解一下呗
- protobuf安装
解压tar包到指定目录
tar -zxvf protobuf-2.5.0.tar.gz -C /usr/local/software/
进入protobuf目录执行一下命令
./configure
make
make check
make install
ldconfig
全部执行完并且没有错误之后配置环境变量
vim /etc/profile
export LD_LIBRARY_PATH=/usr/local/software/protobuf-2.5.0
export PATH=$PATH:$LD_LIBRARY_PATH
输入 protoc --version 验证是否安装成功
最后再安装一个ncurses-devel库
yum install ncurses-devel
至此全部环境准备完毕,上述所有验证都能看到相应环境信息就算成功,如果出现找不到命令什么的环境变量要好好检查一下
装好的环境的profile文件大概是这个样子
3、开始编译(这个过程会下载很多maven资源一定要保证网络通畅,如果网络很慢建议将maven的远程仓库换成阿里的镜像仓库)
<!-- 阿里的maven镜像仓库 -->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
将Hadoop的源码包解压到本地指定目录
tar -zxvf hadoop-3.2.1-src.tar.gz -C /usr/local/software/
进入到Hadoop源码包
执行mvn package -Pdist,native -DskipTests -Dtar即可,会等较长时间
经过漫长的等待看到一堆SUCCESS以及BUILD SUCCESS并且没有报错就是成功了,然后就可以开始快乐的Hadoop之旅了
最后编译成功后的Hadoop包在源码包的hadoop-3.2.1-src/hadoop-dist/target目录下