ambari源码编译教程

前言

ambari源码编译是一个非常痛苦的过程,其官网上的编译资料非常少。本人在尝试编译ambari编码的过程中,遇到了非常多的问题,特别是ambari-web模块,吃了不少苦头。本文介绍的是ambari-2.4.0.0的源码编译过程,如果是高版本编译,可能会少一些问题。编译环境基本从零构建,我相信本教程应该适用绝大多数用户。

一、编译环境准备

1. 安装必要的编译工具:

yum install -y gcc make gcc-c++ openssl-devel wget bzip2 rpm-build python-devel

2. 检查java jdk版本及Python版本

java -version
python -V

jdk 要求1.8版本(1.7版本或许可行,本人没有尝试),python版本要求>=2.6并且<3.0,如果默认python版本不是2.6,则要求有可执行文件/usr/bin/python2.6。如果是在Centos 7.5系统上编译,系统是不带python 2.6版本的,安装python 2.6版本:

wget https://www.python.org/ftp/python/2.6.8/Python-2.6.8.tgz
tar -xzvf Python-2.6.8.tgz
cd Python-2.6.8
./configure
make && make altinstall  
sudo ln -s /usr/local/bin/python2.6 /usr/bin/python2.6

安装完成后使用/usr/bin/python2.6 -V命令,检查安装是否正确

3. 安装maven

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
tar -zxvf apache-maven-3.6.0-bin.tar.gz -C /opt
sudo vim /etc/profile #编辑环境变量,加入以下两句
export MVN_HOME=/opt/apache-maven-3.6.0
export PATH=${MVN_HOME}/bin:$PATH

source /etc/profile

4. 下载安装phantomjs-1.9.8(关于ambari-web构建模块用到的工具都需要特定版本,下面用到的版本都已经过本人验证):

wget http://cdn.npm.taobao.org/dist/phantomjs/phantomjs-1.9.8-linux-x86_64.tar.bz2
tar -jxvf phantomjs-1.9.8-linux-x86_64.tar.bz2 -C /opt
sudo vim /etc/profile

export PHANTOMJS_HOME=/opt/phantomjs-1.9.8-linux-x86_64
export PATH=${PHANTOMJS_HOME}/bin:$PATH

5. 下载并安装nodejs-0.10.44版本,nodejs用来编译ambari-web模块:

wget https://nodejs.org/download/release/v0.10.44/node-v0.10.44-linux-x64.tar.gz
tar -zxvf node-v0.10.44-linux-x64.tar.gz -C /opt/ #解压nodejs并放到/opt目录下
sudo vim /etc/profile #配置环境变量PATH,写入以下两行内容
export NODEJS_HOME=/opt/node-v0.10.44-linux-x64/
export PATH=${NODEJS_HOME}/bin:$PATH

source /etc/profile #让环境变量生效

执行npm -v命令,结果如下图显示,表明nodejs安装成。如果执行不成功,检查PATH路径是否配置好。

[ambari@localhost ~]$ npm -v
2.15.0

6. 更换npm仓库源为淘宝:

npm config set registry https://registry.npm.taobao.org

7. 安装brunch-1.8.5版本 (brunch是一个html5构建工具):

npm install -g [email protected]

8. 安装PhantomJs的依赖库:yum install libXext libXrender fontconfig libfontconfig.so.1,否则会遇到下面的错误提示信息(不影响编译):

Error verifying phantomjs, continuing { [Error: Command failed: /opt/phantomjs-1.9.8-linux-x86_64/bin/phantomjs: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory

二、编译Ambari

1. 下载并解压ambari 2.4.0版本源码:

wget http://archive.apache.org/dist/ambari/ambari-2.4.0/apache-ambari-2.4.0-src.tar.gz
tar xfvz apache-ambari-2.4.0-src.tar.gz

2. 修改apache-ambari-2.4.0-src/ambari-admin项目下的bower版本定义文件:

vim ambari-admin/src/main/resources/ui/admin-web/package.json

找到该行记录:"bower": "1.3.8", 将其修改为 "bower": "1.8.8"。否则会遇到这个错误:SyntaxError: Use of const in strict mode。经过本人多次研究,ambari-2.4.0版本,只有该方法有效(注:如果将bower版本改为1.2.0,不会报这个错误,但会报另一个bower版本过时的错误)

3. 编辑ambari-metrics/ambari-metrics-storm-sink/pom.xml文件,加入以下内容:

 <repositories>
    <repository>
      <id>central</id>
      <name>Central Repository</name>
      <url>http://central.maven.org/maven2/</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

修改storm.version属性为以下内容:
<properties>
    <storm.version>1.1.0</storm.version>
</properties>

4. 编辑ambari/ambari-server/pom.xml文件,修改findBugs版本:

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>3.0.5</version>

5. 开始编译:

cd apache-ambari-2.4.0-src
mvn versions:set -DneVersion=2.4.0.0.0
 
pushd ambari-metrics
mvn versions:set -DnewVersion=2.4.0.0.0
popd

mvn -B clean install package rpm:rpm -DnewVersion=2.4.0.0.0 -DskipTests -Dpython.ver="python >= 2.6"

项目编译成功所需时间在30分钟左右:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章