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

news2024/12/24 0:05:11

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ovirt-engine通过UI Plugin自定义页面

官方API&#xff1a;点击打开 1 新增一个菜单项 1.1 创建引导html 首先你的这个页面是作为一个功能插件存在的&#xff0c;所以先给他起个名字&#xff0c;我这里的页面主要是用作用户创建&#xff0c;所以我的这个插件的名字就叫user。 接着就创建这个插件的 引导html &…

多级式多传感器信息融合中的状态估计(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

新能源车提车、上牌流程

漫长等待四个多月&#xff0c;终于2022年10月27日&#xff0c;笔者圆梦&#xff0c;喜提人生第一辆车。从选车、提车、上牌全程一人&#xff0c;用文记录下经历&#xff0c;以供参考。 一、提车流程 1.1 提车时间 若分到车&#xff0c;4S店销售会提前联系确定时间。 提示&…

【自然语言处理】【实体匹配】CollaborER:使用多特征协作的自监督实体匹配框架

CollaborER&#xff1a;使用多特征协作的自监督实体匹配框架《CollaborER: A Self-supervised Entity Resolution Framework Using Multi-features Collaboration》论文地址&#xff1a;https://arxiv.org/pdf/2108.08090.pdf 相关博客&#xff1a; 【自然语言处理】【实体匹配…

最大似然估计(机器学习)

目录 最大似然估计算法 最大似然估计例子 最大似然估计算法存在的问题 最大似然估计算法 EM算法是一种最大似然估计(Max imum Likel ihood Est imation)算法&#xff0c;传统的最大似然估计算法是根据已知的观察数据来评估模型参数 最大似然估计的一般步骤如下&#xff1a; …

HTML小游戏10 —— 休闲类游戏《解救海盗船长》(附完整源码)

&#x1f482; 网站推荐:【神级源码资源网】【摸鱼小游戏】&#x1f91f; 风趣幽默的前端学习课程&#xff1a;&#x1f449;28个案例趣学前端&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】&#x1f4ac; 免费且实用的计算机相关知…

kingbase之集群部署之集群规划和安装

一、kingbase简介 KingbaseES是一款面向大规模并发交易处理的企业级关系型数据库。该产品支持严格的ACID特性、结合多核架构的极致性能、行业最高的安全标准&#xff0c;以及完备的高可用方案&#xff0c;并提供可覆盖迁移、开发及运维管理全使用周期的智能便捷工具。在早先的博…

zsh: command not found: adb问题分析

问题描述 Mac上使用 adb 调试Android设备时&#xff0c;出现了 zsh: command not found: adb 的报错提示。 出现上述错误代表 adb 无法在挡枪 的shell 中使用&#xff0c;而当前的 shell 为 zsh 。 zsh 介绍 zsh 也是一种 shell &#xff0c;Unix 衍生系统的默认 的shell 都…

如何使用组件切换器做话题导航

highlight: atelier-cave-dark 使用组件切换器实现一个标签导航 效果展示 前置准备 背景素材 话题图标素材 具体步骤 制作背景 制作话题导航 制作话题导航结果列表 设置组件切换器关联内容 创建切换组件行为触发器 创建点击行为触发器 步骤分解 制作背景 将背景素材添加到 …

Vue使用axios进行get请求拼接参数的两种方式

前言 本文主要介绍如何在Vue使用axios进行get请求拼接参数的两种方式 我们就以github上的一个开源接口举例&#xff1a; https://api.github.com/search/users?qxxx 这是github给开发人员提供的一个接口&#xff0c;是get请求。我们可以直接通过浏览器访问 很明显&#xff…

[附源码]java毕业设计网易云音乐推荐系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

FL Studio21傻瓜式编曲音乐编辑器FL水果软件

在我看来软件只是工具.不管哪个都可以做任何风格的音乐,区别只是软件操作相对而言fl studio更容易上手,在国内也很受欢迎,弱项应该是混音上如果你做电音的话 还是FL更好一些 ,因为他就是为舞曲而生的!flstudio内配置音源、插件、录音软件、混音效果!而FLStudio则更偏向于电子音…

[附源码]SSM计算机毕业设计二手车况在线评估JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

分库分表-分片算法运用

分库分表-分片算法运用 ShardingSphere 分片算法 用于将数据分片的算法&#xff0c;支持 、>、<、>、<、BETWEEN 和 IN 进行分片。分片算法可由开发者自行 实现&#xff0c;也可使用 Apache ShardingSphere 内置的分片算法语法糖&#xff0c;灵活度非常高。原理简…

uploads_labs前9题

upload-labs详解1.代码使用的函数详解2.uploads_labs1.Pass-012.Pass-023.Pass-034.Pass-045.Pass-056.Pass-067.Pass-078.Pass-089.Pass-091.代码使用的函数详解 2.uploads_labs 1.Pass-01 function checkFile() {var file document.getElementsByName(upload_file)[0].va…

一年前端面试打怪升级之路

Promise是什么? Promise 是异步编程的一种解决方案&#xff1a;从语法上讲&#xff0c;promise是一个对象&#xff0c;从它可以获取异步操作的消息&#xff1b;从本意上讲&#xff0c;它是承诺&#xff0c;承诺它过一段时间会给你一个结果。promise有三种状态&#xff1a; pe…

基于android平台下的猎聘校园系统的设计与实现

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1选题背景及意义 1 1.2研究现状 1 1.3 研究内容 3 第2章 系统开发环境及相关技术 4 2.1开发环境 4 2.2 Java SDK 4 2.3 Eclipse 5 2.4 ADT 6 2.5 Android SDK 6 3.6 Android开发平台搭建 10 第3章 系统分析 12 3.1 研究目标 12 3.2 需…

矿井水深度除总氮有什么好工艺?硝酸根离子交换柱

煤矿矿井水是指在采煤过程中&#xff0c;所有渗入井下采掘空间的水&#xff0c;矿井水的排放是煤炭工业具有行业特点的污染源之一&#xff0c;量大面广&#xff0c;我国煤炭开发每年矿井的涌水量为20多亿立方米&#xff0c;其特性取决于成煤的地质环境和煤系地层的矿物化学成分…

智慧城市可视化(一)

✍️ 作者简介: 前端博主&#xff1b;CSDN博客专家&#xff1b;51CTO特邀专家博主&#xff0c;全网粉丝2W左右 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多web可视化介绍】 &#x1f947;联系作者&#xff1a;【私信&#xff1a;技术交流 | 信息分享 | 商务合作…

新Token经济模型: 解决当下GameFi困境的「新范式」

介绍&#xff1a; 当你每天打开 StepN&#xff0c;奔跑在回本的道路上&#xff0c;却发现&#xff0c;原来路可以越跑越长&#xff0c;回本成了可望而不可即的幻想&#xff0c;你是否感到些许无奈&#xff1f; 当你充满激情&#xff0c;怀揣致富的梦想&#xff0c;去寻找下一…