ambari x86源码编译
1.准备环境centos7
一、下载 ambari 2.7.3
我们将 ambari 源码包下载到/opt目录下:
cd /opt
wget https://archive.apache.org/dist/ambari/ambari-2.7.3/apache-ambari-2.7.6-src.tar.gz # 源码包大小:85.9M,和www-eu.apache.org、mirrors.tuna.tsinghua.edu.cn网站提供的是一个文件,推荐使用
tar zxvf apache-ambari-2.7.3-src.tar.gz
chown -R root:root apache-ambari-2.7.3-src
二、前置工作
版本说明:
工具 | 版本 |
---|---|
操作系统 | CentOS 7 |
java | 1.8.0_151 |
maven | 3.3.9 |
rpm-build | 4.11.3-43.el7.x86_64 |
gcc-c++ | 4.8.5-39.el7.x86_64 |
python | 2.6(系统自带) |
python-devel | 2.7.5-88.el7.x86_64 |
git | 1.8.3.1 |
1、java 安装
需要下载的依赖安装包,在我的云盘已经保存好了,详情点击下载,链接: https://pan.baidu.com/s/13artwjfgi7ikJiKIBbzb7w 提取码: fgia
1)下载安装包
mkdir /usr/java
cd /usr/java
# 将jdk-8u151-linux-x64.tar.gz拷贝到/usr/java目录下
# 解压
tar zxvf jdk-8u151-linux-x64.tar.gz
# 删除tar包
rm -rf jdk-8u151-linux-x64.tar.gz
2)修改配置文件
vim /etc/profile
# 文末添加如下:
# set java
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
# 保存并退出
:wq!
# 使配置文件生效
source /etc/profile
3)查看版本
java -version
2、maven 安装
1)下载安装包
mkdir /usr/maven
cd /usr/maven
# 将apache-maven-3.3.9-bin.tar.gz拷贝到/usr/maven目录下
# 解压
tar zxvf apache-maven-3.3.9-bin.tar.gz
# 删除tar包
rm -rf apache-maven-3.3.9-bin.tar.gz
2)修改配置文件
vim /etc/profile
# 文末添加如下:
# set mvn
export MAVEN_HOME=/usr/maven/apache-maven-3.3.9
export PATH=$MAVEN_HOME/bin:$PATH
# 保存并退出
:wq!
# 使配置文件生效
source /etc/profile
3)查看版本
mvn -v
3、rpm-build 安装
yum install rpm-build -y
4、gcc-c++ 安装
# centos-7 自带
yum install gcc-c++ -y
5、python-devel 安装
# centos-7 自带
yum install python-devel
6、git 安装
yum install git -y
7、npm 安装
网上下载npm包自行安装
下面是安装好npm后缺少部分bower或gulp我的处理办法 (从一台已经done的机器copy过来)
# 在源机器上打包全局安装包
cd /home/admin/xdliang/node-v10.24.1-linux-x64/lib
tar -czvf npm-global-packages.tar.gz node_modules
# 将压缩包复制到目标机器
scp npm-global-packages.tar.gz user@target-machine:/path/to/destination
# 在目标机器上解压缩包
cd /path/to/node-v10.24.1-linux-x64/lib
tar -xzvf /path/to/destination/npm-global-packages.tar.gz
# 确保 npm 配置正确
npm config set prefix /path/to/node-v10.24.1-linux-x64
# 验证安装
npm list -g --depth=0
三、编译 Ambari
1、maven 镜像源配置
编辑 apache-maven-3.3.9/conf/settings.xml 配置文件,添加好下述镜像源,会提高编译ambari的速度。
<mirrors>
<mirror>
<id>alicentral</id>
<name>aliyun maven central</name>
<url>https://maven.aliyun.com/repository/central</url>
<mirrorOf>central,apache.snapshots.https,maven2-repository.dev.java.net,maven2-glassfish-repository.dev.java.net,maven2-repository.atlassian,apache.staging.https,oss.sonatype.org,spring-milestones</mirrorOf>
</mirror>
<mirror>
<id>alipublic</id>
<name>aliyun maven public</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<proxies>
<proxy>
<id>default-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>10.57.22.219</host>
<port>3128</port>
<nonProxyHosts>maven.fraudmetrix.cn</nonProxyHosts>
</proxy>
</proxies>
- 最后我改变了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>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
</mirrors>
2、将 HDP 3.0 和 3.1 文件拷贝到源码中上
在 ambari2.7.6.0 源码里面,是缺少 HDP 3.0 和 3.1 相关目录的,缺失的话,会导致 ambari 在界面部署 hdp 集群时,出现如下图的窘况:
解决办法就是:将 HDP 3.0 和 3.1 目录拷贝到 ambari-server 的源码里面,具体路径:./ambari-server/src/main/resources/stacks/HDP/ 下,这样后面在编译过程中,就会把这俩目录打到ambari-server.rpm包里面了。
HDP 3.0 和 3.1 文件 这里我百度云盘需要自取
链接: https://pan.baidu.com/s/1hpRmZX64lnEB8ONUCC1-sg 提取码: npmo
3、编译命令
编译 ambari 的话,如果有自定义版本号的要求,可以先给 ambari 源码打上自己定义的版本号。打版本号其实就是通过 mvn 命令自动修改 pom.xml 文件里面的 version 值,包括子模块。
然后第二步就是通过 mvn 命令,将 ambari 各模块源码编译,最终得到各自的 rpm 包,类似 hortonworks 官方提供的 ambari 相关 rpm 包。
https://downloads.apache.org/
#编译的时候最好多线程内存足够大去编译
mvn -X -T 8 -DargLine="-Xmx2g -Xms8g" clean install package rpm:rpm -DnewVersion=2.7.3.0.0 -DskipTests -Dmaven.test.skip=true -Drat.numUnapprovedLicenses=1000 -Dpython.ver="python>=2.6" -Drat.skip -Dcheckstyle.skip
四、编译技巧
ambari 源码分为多个模块,当某个模块编译失败时,我们想继续从这个模块开始编译,怎么做呢?
举个例子,假如 ambari-web 模块编译报错,只需要在编译命令的末尾添加:-rf :ambari-web
即可。当报错时显示的模块名,会在 mvn 输出的最后一行显示。
1.编译Ambari Web报错
Q:
A:
Q:
A:
没有phantomjs就去安装https://blog.csdn.net/github_39577257/article/details/106211612?spm=1001.2014.3001.5502
安装过程报错
安装ruby
sudo yum install ruby
sudo yum install gperf
2.编译Ambari-admin报错
下一步继续报错
#配置yum代理
sudo yum install yarn
重新装这个npm和31.13的保持一致
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc # 或 source ~/.zshrc
nvm install 10.24.1
nvm alias default node
npm不可用
npm config set registry https://registry.npmmirror.com
改一下node version的版本
Q:
确保你的系统时间和日期是正确的。可以使用以下命令同步时间:
sudo ntpdate pool.ntp.org
npm config set strict-ssl false
yarn config set strict-ssl false
A:
Q:/home/tdops/.m2/repository/org/apache/maven/plugins/maven-checkstyle-plugin安装卡死
A: 删除重新安装
ps aux --sort=-%mem | head -n 10
#内存满了
3.编译Ambari-solar报错
Q:
A:找不到的版本直接修改成通用版本
Q:
A:类似这种的删了重新下
4.编译Ambari-infra报错
Q:
A:
grep -r "central.maven.org" /opt/apache-ambari-2.7.3-src/
#全部改成自己maven中配置的试一下
#http://maven.fraudmetrix.cn/nexus/content/groups/public
5.编译Ambari-metrics hadoop sink报错
Q:
A:一样的问题找出这个/nexus-private-hortonworks替换成本地源
vi /opt/apache-ambari-2.7.3-src/ambari-metrics/pom.xml
6.编译Ambari-metrics-storm-sink报错
Q:
A:增加一个pom依赖
com.googlecode.json-simple
json-simple
1.1
7编译Ambari-logsearch-web
Q:
A:
#设置自己的梯子
yarn config set https-proxy http://10.57.241.28:7890/
yarn config set proxy http://10.57.241.28:7890/
yarn config set registry https://registry.npmmirror.com/
8编译Ambari metrics Collector 报错
Q:
A:相对应地版本已经找不到了 改成私服对应版本
9.编译Ambari metrics grafana 报错
A:
离线下载包然后 把文件放某个目录 那个目录起一个python simple server到指定端口
修改指定ambari-metrics/pom.xml成离线安装
nohup python -m SimpleHTTPServer 12345 > server.log 2>&1 &
Q:
A:
#修改pom
/opt/apache-ambari-2.7.3-src/ambari-metrics/ambari-metrics-timelineservice
Q:
#编码的问题不管他等待
#或者删除有关文件
find /data01/.m2/ -name resolver-status.properties -delete