前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >国内网络编译,Ambari 2.7.6 全部模块源码编译笔记

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

作者头像
create17
发布2023-02-13 19:07:51
1.7K0
发布2023-02-13 19:07:51
举报
文章被收录于专栏:大数据实战演练
本次编译 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目录下:

代码语言:javascript
复制
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

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)下载安装包

代码语言:javascript
复制
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)修改配置文件

代码语言:javascript
复制
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)查看版本

代码语言:javascript
复制
java -version
2、maven 安装

1)下载安装包

代码语言:javascript
复制
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)修改配置文件

代码语言:javascript
复制
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)查看版本

代码语言:javascript
复制
mvn -v
3、rpm-build 安装
代码语言:javascript
复制
yum install rpm-build -y
4、gcc-c++ 安装
代码语言:javascript
复制
# centos-7 自带
yum install gcc-c++ -y
5、python-devel 安装
代码语言:javascript
复制
# centos-7 自带
yum install python-devel
6、git 安装
代码语言:javascript
复制
yum install git -y

三、编译 Ambari

1、maven 镜像源配置

编辑 apache-maven-3.3.9/conf/settings.xml 配置文件,添加好下述镜像源,会提高编译ambari的速度。

代码语言:javascript
复制
<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 包。

代码语言:javascript
复制
# 给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 包汇总起来:

代码语言:javascript
复制
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 全部源码编译保姆级教程,记录了编译过程中所有的报错及解决方案,过程非常详细,是不可多得的好教程。

作者介绍: Ambari 资深用户,输出很多技术干货,相关二次开发实战经验丰富,帮助很多人解决疑难问题,录有两门 Ambari 实战课程,学员人数 300+,在圈子里有一定的知名度。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据实战演练 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、下载 ambari 2.7.6
  • 二、前置工作
    • 1、java 安装
      • 2、maven 安装
        • 3、rpm-build 安装
          • 4、gcc-c++ 安装
            • 5、python-devel 安装
              • 6、git 安装
              • 三、编译 Ambari
                • 1、maven 镜像源配置
                  • 2、将 HDP 3.0 和 3.1 文件拷贝到源码中上
                    • 3、编译命令
                    • 四、编译技巧
                    • 五、报错记录
                      • 本文只列举了 ambari 2.7.6 全部源码编译时的报错记录,关于解决方案可点击「阅读原文」跳转,或访问:https://mbd.pub/o/bread/mbd-Y5yWmphy
                        • 1、Ambari Web 编译失败
                          • 本文只列举了 ambari 2.7.6 全部源码编译时的报错记录,关于解决方案可点击「阅读原文」跳转,或访问:https://mbd.pub/o/bread/mbd-Y5yWmphy
                          • 六、编译包整理
                          • 笔记为 Ambari 2.7.6 全部源码编译保姆级教程,记录了编译过程中所有的报错及解决方案,过程非常详细,是不可多得的好教程。
                          相关产品与服务
                          Grafana 服务
                          Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档