有时候我们需要更改源码更好的使用,
使用自己的机器编译的源码性能更高
①必备的软件:
apache-ant
apache-maven
protobuf:Protobuf是一种平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储下载地址(github)
源码包
②非必须的软件
findbugs,findbugs官网下载
所有apache软件下载地址:apache所有开源项目的链接
解压重命名环境变量
# 配置Maven export MAVEN_HOME=/opt/maven export PATH=$PATH:$MAVEN_HOME/bin # 配置Maven使用的内存 export MAVEN_OPTS="-Xms1024m -Xmx2048m" # 配置ant export ANT_HOME=/opt/ant export PATH=$PATH:$ANT_HOME/bin # 配置findbugs export FIND_BUGS_HOME=/opt/findbugs export PATH=$PATH:$FIND_BUGS_HOME/bin #protobuf export PROTOC_HOME=/opt/protobuf export PATH=$PROTOC_HOME/bin:$PATH
③需要下载的工具软件
yum -y install gcc* yum install autoconf automake libtool cmake yum -y install openssl-devel yum -y install ncurses-devel yum install lzo-devel zlib-devel bzip2 yum -y install libs* yum install fuse-devel验证安装
[root@hadoop100 opt]# ant -version Apache Ant(TM) version 1.10.9 compiled on September 27 2020 [root@hadoop100 opt]# mvn -version Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739) Maven home: /opt/maven Java version: 1.8.0_131, vendor: Oracle Corporation, runtime: /opt/jdk/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix" [root@hadoop100 opt]# findbugs -version 3.0.1 [root@hadoop100 opt]#修改maven远程仓库地址(国外的慢!!)
编译protobuf并安装alimaven central aliyun maven http://maven.aliyun.com/nexus/content/groups/public/
进入protobuf安装目录
生成配置文件(如果下载的是源码的话需要执行,如果下载的是已经生成了配置文件的不需要操作)
./autogen.sh
运行配置脚本,配置一些信息
./configure
编译(过程比较长)
make
安装
make install
验证:
protoc --version which protoc编译源码包
我这里没有源码包,所以又下载了一个源码包(src)
解压
[root@hadoop100 opt]# tar -zxvf hadoop-3.3.1-src.tar.gz -C ../
编译
mvn clean package -DskipTests -Pdist,native -Dtar
参数:clean → 清理旧的jar包
package →打包,hadoop源码编译之后的安装包
-DskipTests →跳过测试
-Pdist,native →生成结果目录的后缀dist, native:本地cpu相吻合的.so动态链接库,会将其一并打包到安装包中去
-Dtar → 打包后的目标压缩包的类型,xxx.tar.gz
在源码目录下
[root@hadoop100 hadoop-3.3.1-src]# mvn clean package -DskipTests -Pdist,native -Dtar出现报错
[ERROR] 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] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException [ERROR] [ERROR] After correcting the problems, you can resume the build with the command [ERROR] mvn-rf :hadoop-common
也是hadoop3.3.1的经典报错了,就不深究了,直接上解决办法
就是cmake版本太低:yum不行那就自己安装
yum删除已安装的cmake:yum erase cmake
官网下载cmake安装包,手动安装。下载链接:
解压安装包:tar -zxvf cmake-3.13.5.tar.gz -C …/
跳转至cmake目录:cd /opt/cmake
编译: ./configure
安装: make && make install
检验安装是否成功:cmake -version
再次编译经历一个小时的等待终于是搞定了
当然不要忘记包的位置:
结束!



