ambari代码编译


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
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

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:
image.png
image.png
A:
image.png
Q:
image.png
A:
没有phantomjs就去安装https://blog.csdn.net/github_39577257/article/details/106211612?spm=1001.2014.3001.5502
安装过程报错
image.png
安装ruby

sudo yum install ruby

image.png

sudo yum install gperf
2.编译Ambari-admin报错

下一步继续报错
image.png

#配置yum代理
sudo yum install yarn

image.png
重新装这个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不可用
image.png

npm config set registry https://registry.npmmirror.com

image.png
改一下node version的版本
image.png

Q:image.png
确保你的系统时间和日期是正确的。可以使用以下命令同步时间:

sudo ntpdate pool.ntp.org
npm config set strict-ssl false
yarn config set strict-ssl false

A:
image.png
image.png

Q:/home/tdops/.m2/repository/org/apache/maven/plugins/maven-checkstyle-plugin安装卡死
A: 删除重新安装

image.png

ps aux --sort=-%mem | head -n 10
#内存满了
3.编译Ambari-solar报错

Q:
image.png
A:找不到的版本直接修改成通用版本
image.png

Q:image.png
A:类似这种的删了重新下

4.编译Ambari-infra报错

Q:
image.png

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:image.png
A:一样的问题找出这个/nexus-private-hortonworks替换成本地源

vi /opt/apache-ambari-2.7.3-src/ambari-metrics/pom.xml

image.png

6.编译Ambari-metrics-storm-sink报错

Q:image.png
A:增加一个pom依赖

com.googlecode.json-simple
json-simple
1.1

image.png

7编译Ambari-logsearch-web

Q:
image.png
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:
image.png
A:相对应地版本已经找不到了 改成私服对应版本
9.编译Ambari metrics grafana 报错
image.png
A:
离线下载包然后 把文件放某个目录 那个目录起一个python simple server到指定端口
image.png修改指定ambari-metrics/pom.xml成离线安装

nohup python -m SimpleHTTPServer 12345 > server.log 2>&1 &

Q:
image.png
A:

#修改pom
/opt/apache-ambari-2.7.3-src/ambari-metrics/ambari-metrics-timelineservice

image.png

Q:
image.png
image.png

#编码的问题不管他等待
#或者删除有关文件
find /data01/.m2/ -name resolver-status.properties -delete
五、编译成功

image.png

  • 12
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值