心得

ambari是什么?懂的都懂,这里不做过多介绍.
经历了2.7.4和2.7.5的暗黑时代,终于迎来了2.7.7版本的发布,其中心酸,不可言语…
其实2.7.6版本已经移除了amabri-metrics的闭源依赖,但是hbase的版本依旧停留在2.0.2,而2.7.7版本,hbase的版本已经升级至2.4.2,不管怎么说,反正是小小的升级了一波,总比不进步要强吧.
说实在的,ambari的思想落地,是不错的,但是它对开发者,是不友好的,它的代码中,包含了大量的自己搭建的框架,业务+框架=头疼!
才看到它的代码时,你会说,明明可以用spring一把过的东西,它非要重新搞一套框架吗?开发者根本没有办法专注与业务本身!
我也认为它这样的决定,注定了之后的版本升级上, 它本身架构层的代码无法撼动(其实也和它开发的时间有关,当时spring还是基于xml配置的方式来注入bean).
但是以上种种,都不妨碍它确实足够优秀,里面的架构思想,值得人学习!
而本文的重点,是从编译说起.
ambari打包为rpm包或者deb包的目的,可能是为了一些取舍,不管什么原因,目前最好按照它期望的方式进行编译吧!

依赖

  • JDK选择1.8
  • node选择10(6也行)
  • 提前下载好phantomjs-1.9.7-linux-x86_64.tar.bz2包,最好同时下载1.9.8和2.1.1版本(因为你也没办法确认最终会使用哪个),将它们放在==/tmp/phantomjs==路径下,这一步非常重要,这是前端依赖包,这样做可以避免因为没有办法科学冲浪导致的打包失败.

编译步骤

  1. 进入ambari-admin/src/main/resources/ui/admin-web,提前下载前端依赖包
# 下载依赖
npm install
# 使用bower包管理工具下载依赖(这一步需要外网,才可以下载依赖包)
bower install

通过以上步骤,会在ambari-admin/src/main/resources/ui/admin-web/app路径下多一个bower_components文件夹,到达这一步,基本上前端编译的依赖问题解决!
2. 建议(也可以不做)修改ambari-metrics/pom.xml依赖的软件包路径,改为本地提前下载好的包路径,这样会提高编译速度

<!--TODO change to HDP URL-->
    <hbase.tar>file:///var/ambari/packages/hbase-2.4.2-bin.tar.gz</hbase.tar>
    <hbase.folder>hbase-2.4.2</hbase.folder>
    <hadoop.tar>file:///var/ambari/packages/hadoop-3.1.1.tar.gz</hadoop.tar>
    <hadoop.folder>hadoop-3.1.1</hadoop.folder>
    <hadoop.version>3.1.1</hadoop.version>
    <grafana.folder>grafana-6.7.4</grafana.folder>
    <grafana.tar>file:///var/ambari/packages/grafana-6.7.4.linux-amd64.tar.gz</grafana.tar>
    <phoenix.tar>file:///var/ambari/packages/phoenix-hbase-2.4-5.1.2-bin.tar.gz</phoenix.tar>
  1. 打包.以最新的ambari-2.7.7为例
# 设置ambari项目pom版本
mvn versions:set -DnewVersion=2.7.7.0.0
# 进入ambari-metrics
pushd ambari-metrics
# 设置ambari-metrics版本
mvn versions:set -DnewVersion=2.7.7.0.0
# 跳出ambari-metrics
popd
# 编译ambari-server,ambari-agent rpm包
mvn -B clean install rpm:rpm -DnewVersion=2.7.7.0.0 -DbuildNumber=388e072381e71c7755673b7743531c03a4d61be8 -DskipTests -Drat.skip=true -Dpython.ver="python >= 2.6"
# 进入ambari-metrics
pushd ambari-metrics
# 编译ambari-metrics rpm包
mvn install -Dbuild-rpm -DskipTests -Drat.skip=true
# 跳出ambari-metrics
popd