国内网络编译,Ambari 2.7.6 全部模块源码编译笔记

本次编译 ambari 2.7.6 没有使用科学上网的工具,使用的普通网络,可以编译成功,过程比 ambari 2.7.5 编译时要顺畅。

该版本相对 2.7.5 版本以来,共有 26 个 contributors 提交了 114 个 commits 以及修改了 557 个文件。详情见:https://github.com/apache/ambari/compare/release-2.7.5…release-2.7.6

ambari 2.7.6 源码编译与之前版本相比,就编译来说优化了很多地方,主要有:

  • 涉及前端模块的 npm 构建都切换为了 yarn 构建。关于 npm vs yarn 可参考:https://zhuanlan.zhihu.com/p/23493436
  • 编译 ambari-metrics 模块时,摆脱了 hortonworks 提供的 hbase、hadoop、grafana、phoenix 地址,改为了 apache 提供的地址,能直接下载到。

好了,是不是很期待编译 ambari 2.7.6 ?那我们现在开始吧!~

一、下载 ambari 2.7.6

我们将 ambari 源码包下载到/opt目录下:

cd /opt
# https://github.com/apache/ambari/archive/refs/tags/release-2.7.6.tar.gz   源码包大小:81.4M
# https://www-eu.apache.org/dist/ambari/ambari-2.7.6/apache-ambari-2.7.6-src.tar.gz    源码包大小:85.9M
# https://mirrors.tuna.tsinghua.edu.cn/apache/ambari/ambari-2.7.6/apache-ambari-2.7.6-src.tar.gz   源码包大小:85.9M
wget https://archive.apache.org/dist/ambari/ambari-2.7.6/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.6-src.tar.gz
chown -R root:root apache-ambari-2.7.6-src

二、前置工作

版本说明:

工具版本
操作系统CentOS 7
java1.8.0_151
maven3.3.9
rpm-build4.11.3-43.el7.x86_64
gcc-c++4.8.5-39.el7.x86_64
python2.6(系统自带)
python-devel2.7.5-88.el7.x86_64
git1.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

三、编译 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>
    <mirror>
        <id>nexus-hortonworks</id>
        <name>Nexus hortonworks</name>
        <url>https://repo.hortonworks.com/content/groups/public/</url>
        <mirrorOf>central</mirrorOf> 
    </mirror>
    <mirror>
        <id>HDPReleases</id>
        <name>HDP Releases</name>
        <url>https://repo.hortonworks.com/content/repositories/releases/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>
  • id: 唯一标识
  • name: 名称描述
  • url: 地址
  • mirrorOf: 可以理解"为某个仓库(repository)的做镜像",填写的是repostoryId。相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。可选项:
    • central: 匹配远程中央仓库
    • * 匹配所有的仓库,但这样有个缺点,就是如果该镜像仓库没有所需jar包,则报错
    • external:* 除了本地缓存之后的所有仓库
    • repo,repo1 repo 或者 repo1。 这里repo指的是repostoryId
    • *,!repo1 除了repo1的所有远程仓库

更多知识可参考:https://www.jianshu.com/p/c4f02c5bdfc7

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 文件链接: 可备注【ambari】加我好友 create17_ 免费获取。

3、编译命令

编译ambari的话,如果有自定义版本号的要求,可以先给ambari源码打上自己定义的版本号。打版本号其实就是通过mvn命令自动修改pom.xml文件里面的version值,包括子模块。

然后第二步就是通过mvn命令,将ambari各模块源码编译,最终得到各自的rpm包,类似hortonworks官方提供的ambari相关rpm包。

# 给ambari源码打版本号,版本号可自定义
mvn versions:set -DnewVersion=2.7.6.0.199
# 进入ambari-metrics模块
pushd ambari-metrics
# 打版本号
mvn versions:set -DnewVersion=2.7.6.0.199
# 返回到ambari根目录
popd
# 进入ambari-logsearch模块
pushd ambari-logsearch
# 打版本号
mvn versions:set -DnewVersion=2.7.6.0.199
# 返回到ambari根目录
popd
# 进入ambari-infra模块
pushd ambari-infra
# 打版本号
mvn versions:set -DnewVersion=2.7.6.0.199
# 返回到ambari根目录
popd
# 开始编译
mvn -B -X install rpm:rpm -DnewVersion=2.7.6.0.199 -DbuildNumber=5895e4ed6b30a2da8a90fee2403b6cab91d19972 -DskipTests -Dpython.ver="python >= 2.6" -Drat.skip=true
# 建议将上述命令全量复制,需要buildNumber,否则等rpm包安装时,会报buildNumber错误;-Drat.skip=true会跳过license校验。

四、编译技巧

ambari 源码分为多个模块,当某个模块编译失败时,我们想继续从这个模块开始编译,怎么做呢?

举个例子,假如 ambari-web 模块编译报错,只需要在编译命令的末尾添加:-rf :ambari-web 即可。当报错时显示的模块名,会在 mvn 输出的最后一行显示。

五、报错记录

本文列举了 ambari 2.7.6 全部源码编译时的报错记录,关于解决方案可访问:https://mbd.pub/o/bread/mbd-Y5yWmphy

1、Ambari Web 编译失败

2、Ambari Admin View 编译失败




3、Files 视图编译失败



4、Pig 模块编译失败


5、Capacity Scheduler 编译失败

6、WF Manager View 编译失败

7、Ambari Logsearch Web 编译失败


8、Ambari Infra Assembly 编译失败

本文列举了 ambari 2.7.6 全部源码编译时的报错记录,关于解决方案可访问:https://mbd.pub/o/bread/mbd-Y5yWmphy

六、编译包整理


Ambari 视图、ambari-metrics、ambari-logsearch、ambari-solr 都编译成功了。这里想多说一句,对于网络上的一些博客,大部分都是只编译了ambari-server 和 ambari-agent,甚至连 ambari 视图都没有编译到。在这里,我的教程是很全的,大家可以跟着我的教程做。对于 ambari 源码编译,我已经帮助过很多很多人了。

Ambari 源码全部编译完成后,我们需要将 ambari 各模块的编译包汇总起来。以 centos7 为例,我们需要将编译得到的 rpm 包汇总起来:

mkdir /var/www/html/ambari2/
cp -r ./ambari-server/target/rpm/ambari-server/RPMS/x86_64/ambari-server-2.7.6.0-199.x86_64.rpm /var/www/html/ambari2/
cp -r ./ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/ambari-agent-2.7.6.0-199.x86_64.rpm /var/www/html/ambari2/
cp -r ./ambari-metrics/ambari-metrics-assembly/target/rpm/ambari-metrics-collector/RPMS/x86_64/ambari-metrics-collector-2.7.6.0-199.x86_64.rpm /var/www/html/ambari2/
cp -r ./ambari-metrics/ambari-metrics-assembly/target/rpm/ambari-metrics-hadoop-sink/RPMS/x86_64/ambari-metrics-hadoop-sink-2.7.6.0-199.x86_64.rpm /var/www/html/ambari2/
cp -r ./ambari-metrics/ambari-metrics-assembly/target/rpm/ambari-metrics-grafana/RPMS/x86_64/ambari-metrics-grafana-2.7.6.0-199.x86_64.rpm /var/www/html/ambari2/
cp -r ./ambari-metrics/ambari-metrics-assembly/target/rpm/ambari-metrics-monitor/RPMS/x86_64/ambari-metrics-monitor-2.7.6.0-199.x86_64.rpm /var/www/html/ambari2/
cp -r ./ambari-metrics/ambari-metrics-common/target/rpm/ambari-metrics-common/RPMS/noarch/ambari-metrics-common-2.7.6.0-199.noarch.rpm /var/www/html/ambari2/
cp -r ./ambari-infra/ambari-infra-assembly/target/rpm/ambari-infra-solr/RPMS/noarch/ambari-infra-solr-2.7.6.0-199.noarch.rpm /var/www/html/ambari2/
cp -r ./ambari-infra/ambari-infra-assembly/target/rpm/ambari-infra-solr-client/RPMS/noarch/ambari-infra-solr-client-2.7.6.0-199.noarch.rpm /var/www/html/ambari2/
cp -r ./ambari-infra/ambari-infra-assembly/target/rpm/ambari-infra-manager/RPMS/noarch/ambari-infra-manager-2.7.6.0-199.noarch.rpm /var/www/html/ambari2/
cp -r ./ambari-logsearch/ambari-logsearch-assembly/target/rpm/ambari-logsearch-portal/RPMS/noarch/ambari-logsearch-portal-2.7.6.0-199.noarch.rpm /var/www/html/ambari2/
cp -r ./ambari-logsearch/ambari-logsearch-assembly/target/rpm/ambari-logsearch-logfeeder/RPMS/noarch/ambari-logsearch-logfeeder-2.7.6.0-199.noarch.rpm /var/www/html/ambari2/

如下图所示:

接下来就可以将这些 rpm 包制作为 yum 本地源了。


笔记为 Ambari 2.7.6 全部源码编译保姆级教程,记录了编译过程中所有的报错及解决方案,过程非常详细,是不可多得的好教程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

create17

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值