源码编译 - hadoop3.31
hadoop源码编译
一、准备工作
1、下载hadoop源码
官网地址:https://www.apache.org/index.html#projects-list
清华大学镜像网站:https://mirrors.tuna.tsinghua.edu.cn/apache/
2、编译版本及要求
下载源码,上传至Linux,解压
tar -zxvf hadoop-3.3.1-src.tar.gz -C /usr/local
查看编译要求
less /usr/local/hadoop-3.3.1-src/BUILDING.txt
3、准备编译环境所需安装包
#jdk jdk-8u181-linux-x64.rpm #maven apache-maven-3.9.0-bin.tar.gz #ant 一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。 apache-ant-1.9.9-bin.tar.bz2 #protobuf 谷歌研发出来的一个网络通信和数据存储的协议 (必备) 2.5版本 protobuf-2.5.0.tar.gz #findbugs 编译源码的过程中如果出现bug findbugs会自动帮你找到并定位到这个bug findbugs-3.0.1.tar.gz #node node-v13.1.0-linux-x64.tar.gz #cmake cmake-3.26.0-rc5.tar #snappy snappy-1.1.3.tar.gz
4、安装环境配置环境变量
1)yum安装系统自带
yum -y install svn ncurses-devel gcc* lzo-devel zlib-devel autoconf automake libtool openssl-devel bzip2
2)jdk
rpm -ivh jdk-8u181-linux-x64.rpm
3)maven
解压到指定目录
tar -zxvf apache-maven-3.9.0-bin.tar.gz -C /opt
修改权限
chmod -R 765 apache-maven-3.9.0
创建软连接(绝对路径)
ln -s /opt/apache-maven-3.9.0 /usr/local/maven
修改配置文件
vi /usr/local/maven/conf/setting.xml
a、本地仓库位置
<localRepository>/data/maven/repository</localRepository>
b、镜像仓库
<mirrors>
<!-- 阿里云仓库 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
<!-- 中央仓库1 -->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<!-- 中央仓库2 -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
</mirrors>
验证
mvn -v
4)ant
解压到指定位置
tar -zxvf apache-ant-1.9.9-bin.tar.bz2 -C /opt
创建软连接
ln -s /opt/apache-ant-1.9.9 /usr/local/apache-ant
验证
ll /usr/loca/ |grep ‘ant‘
5)protobuf
解压压缩文件
tar -zxf protobuf-2.5.0.tar.gz -C /usr/local/
检查编译所用的环境,并生成用make命令编译使用的文件
cd /usr/local/protobuf-2.5.0
./configure
#编译protobuf
make
#安装protobuf
sudo make install
#查看版本信息并验证是否安装成功
protoc --version
6)findbugs
解压
tar -xzf findbugs-3.0.1.tar.gz -C /usr/local
查看版本
/usr/local/findbugs-3.0.1/bin/findbugs -version
7)node
系统自带版本较低
解压
tar -zxvf node-v13.1.0-linux-x64.tar -C /opt
创建软连接
ln -s /opt/node-v13.1.0-linux-x64 /usr/local/node
8)cmake
yum 安装版本低,后期编译报错
卸载已安装的
yum erase cmake
解压
tar -zxvf cmake-3.13.5.tar.gz -C /opt
跳转至cmake目录:
cd /opt/cmake
编译
./configure
安装
make && make install
检验安装是否成功:
cmake -version
9)snappy
#解压压缩
tar -xzf snappy-1.1.3.tar.gz -C /usr/local/
#检查编译所用的环境,并生成用make命令编译使用的文件
cd /usr/local/snappy-1.1.3
./configure
#编译
make
#安装
sudo make install
#查看安装情况
ls -lh /usr/local/lib |grep snappy
10)配置环境变量
vi /etc/profile
#java
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
#node
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
#set Hadoop_compile
export MAVEN_HOME=/usr/local/maven
export FINDBUGS_HOME=/usr/local/findbugs
export PROTOBUF_HOME=/usr/local/protobuf
export ANT_HOME=/usr/local/apache-ant
export PATH=$PATH:$MAVEN_HOME/bin:$FINDBUGS_HOME/bin:$ANT_HOME/bin
export MAVEN_OPTS="-Xmx2g -XX:MaxMetaspaceSize=512M -XX:ReservedCodeCacheSize=512m"
二、编译
进入hadoop目录
cd /usr/local/hadoop-3.3.1-src
开始编译
mvn clean package -Pdist,native -DskipTests -Dtar -Dbundle.snappy -Dsnappy.lib=/usr/local/lib
编译完成后位置
/usr/local/hadoop-3.3.1-src/hadoop-dist/target
由于项目较大,请耐心等待
编译成功
三、编译报错
1、hadoop-maven-plugins:3.3.1:cmake-compile
Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.3.1:cmake-compile (cmake-compile) on project hadoop-common: CMake failed with error code 1 -> [Help 1]
原因:yum安装的cmake版本太低,需重新安装
2、frontend-maven-plugin:1.11.2:yarn (yarn install)
Failed to execute goal
com.github.eirslett:frontend-maven-plugin:1.11.2:yarn (yarn install)
on project hadoop-yarn-applications-catalog-webapp:
Failed to run task: 'yarn ' failed. org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1) -> [Help 1]
原因:node版本与pom中版本不一致
确认编辑报错位置:hadoop-yarn-applications-catalog-webapp(cd /usr/local/hadoop-3.3.1-src/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-applications-catalog/hadoop-yarn-applications-catalog-webapp)
修改pom.xml文件中<nodeVersion>v8.11.3</nodeVersion>与系统版本一致