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分鐘左右:

 

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