|
1、簡(jiǎn)介 Ambari 跟 Hadoop 等開源軟件一樣,也是 Apache Software Foundation 中的一個(gè)項(xiàng)目,并且是頂級(jí)項(xiàng)目。就 Ambari 的作用來(lái)說(shuō),就是創(chuàng)建、管理、監(jiān)視 Hadoop 的集群,但是這里的 Hadoop 是廣義,指的是 Hadoop 整個(gè)生態(tài)圈(例如 Hive,Hbase,Sqoop,Zookeeper 等), 而并不僅是特指 Hadoop。用一句話來(lái)說(shuō),Ambari 就是為了讓 Hadoop 以及相關(guān)的大數(shù)據(jù)軟件更容易使用的一個(gè)工具。 Ambari 現(xiàn)在所支持的平臺(tái)組件也越來(lái)越多,例如流行的 Spark,Storm 等計(jì)算框架,以及資源調(diào)度平臺(tái) YARN 等,我們都能輕松地通過(guò) Ambari 來(lái)進(jìn)行部署。 Ambari 自身也是一個(gè)分布式架構(gòu)的軟件,主要由兩部分組成:Ambari Server 和 Ambari Agent。簡(jiǎn)單來(lái)說(shuō),用戶通過(guò) Ambari Server 通知 Ambari Agent 安裝對(duì)應(yīng)的軟件;Agent 會(huì)定時(shí)地發(fā)送各個(gè)機(jī)器每個(gè)軟件模塊的狀態(tài)給 Ambari Server,最終這些狀態(tài)信息會(huì)呈現(xiàn)在 Ambari 的 GUI,方便用戶了解到集群的各種狀態(tài),并進(jìn)行相應(yīng)的維護(hù)。 官方鏈接:http://ambari./ 2、基礎(chǔ)環(huán)境 類別 | 子項(xiàng) | 版本 | 獲取地址(方法) | 華為云 華為云 | 虛擬機(jī) | RC3(916) | -- | OS | CentOS | 7.5 |
| Kernel | 4.14 |
| 軟件包 | ambari | 2.6.1 | http://archive./dist/ambari/ambari-2.6.1/apache-ambari-2.6.1-src.tar.gz | 依賴包 | JAVA-JDK8,nodejs(0.10.0以上),maven(3.0.6以上)phantomjs2.1.1, frontend-maven-plugin leveldb |
|
|
3、依賴安裝 參照: 《華為云鯤鵬云服務(wù)最佳實(shí)踐-JDK-1.8.0 安裝配置指南》 《華為云鯤鵬云服務(wù)最佳實(shí)踐-node 8.12.0 安裝配置指南》 《華為云鯤鵬云服務(wù)最佳實(shí)踐-maven-3.6.0 安裝配置指南》 3.1 安裝編譯前置依賴
環(huán)境需求 yum install rpm-build (用于創(chuàng)建rpm的二進(jìn)制軟件包和源碼軟件包) yum install gcc-c++ yum install python-devel (安裝源外的python類庫(kù),或程序編譯需要鏈接libpythonXX.(a|so)的情況) yum install git (開源的分布式版本控制系統(tǒng)) |
安裝依賴 npm install -g bower (前端包管理工具) npm install -g gulp (基于node.js的一個(gè)前端自動(dòng)化構(gòu)建工具) npm install -g brunch (HTML5 構(gòu)建工具) |


3.2 編譯安裝phantomjs (基于webkit的JavaScript API, 隱形的瀏覽器)依賴安裝 yum install gcc gcc-c++ make flex bison gperf ruby openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel libpng-devel libjpeg-devel 源碼下載和qt包下載 git clone git://github.com/ariya/phantomjs.git cd phantomjs git checkout 2.1.1 git submodule init git submodule update (和網(wǎng)速有關(guān),可能會(huì)較久) 修改Makefile優(yōu)化級(jí)別為O2: phantomjs/src/qt/qtbase/src/gui/Makefile 編譯 ./build.py -c -j $(getconf _NPROCESSORS_ONLN) 編譯時(shí)長(zhǎng)和配置有關(guān),最短一般一個(gè)小時(shí) |

在phantomjs/deploy中執(zhí)行: ./package.sh #生成可用二進(jìn)制文件 |

將此文件拷貝到需要安裝的地方聲明環(huán)境變量即可 在/etc/profile中加入: #phantomjs export PATH=$PATH:/usr/local/phantomjs-2.1.1-linux-aarch64/bin 修改后執(zhí)行: source /etc/profile |
驗(yàn)證 
3.3 編譯安裝 frontend-maven-plugingit clone https://github.com/eirslett/frontend-maven-plugin.git cd frontend-maven-plugin git checkout -b 0.0.16 frontend-plugins-0.0.16 mvn clean -DskipTests install |

3.4 編譯安裝leveldb方法一 wget http://pkgs./repo/pkgs/snappy/snappy-1.0.5.tar.gz/4c0af044e654f5983f4acbf00d1ac236/snappy-1.0.5.tar.gz | tar -xf snappy-1.0.5.tar.gz; cd snappy-1.0.5 | ./configure --disable-shared --with-pic --host aarch64-unknown-linux --build arrch64-unknown-linux | make -j4 |

拉取leveldb cd .. git clone git://github.com/chirino/leveldb.git git clone git://github.com/fusesource/leveldbjni.git export SNAPPY_HOME=`cd snappy-1.0.5; pwd` export LEVELDB_HOME=`cd leveldb; pwd` export LEVELDBJNI_HOME=`cd leveldbjni; pwd` cd leveldb export LIBRARY_PATH=${SNAPPY_HOME} export C_INCLUDE_PATH=${LIBRARY_PATH} export CPLUS_INCLUDE_PATH=${LIBRARY_PATH} git apply ../leveldbjni/leveldb.patch make libleveldb.a cd ${LEVELDBJNI_HOME} git checkout -b 1.8 leveldbjni-1.8 mvn clean install -P all -P linux64 -DskipTests=true |
方法二: 
cd /root/rpmbuild/RPMS/aarch64/ rpm -ivh leveldb-* |

3.5 編譯安裝leveldbjnigit clone git://github.com/fusesource/leveldbjni.git cd leveldbjni git checkout -b 1.8 leveldbjni-1.8 將各個(gè)環(huán)境變量聲明 export LEVELDB_HOME=/usr/include/leveldb export SNAPPY_HOME=/usr/local/snappy-1.0.5 export LEVELDBJNI_HOME=/usr/local/leveldbjni 進(jìn)行編譯 mvn clean install -P all -P linux64 -DskipTests=true |
成功后有如下:
4、組件編譯安裝 4.1 下載ambari源碼wget http://archive./dist/ambari/ambari-2.6.1/apache-ambari-2.6.1-src.tar.gz tar xfvz apache-ambari-2.6.1-src.tar.gz cd apache-ambari-2.6.1-src |
4.2 編譯ambari4.2.1 修改配置文件將各項(xiàng)配置文件中的x86和amd64分別修改為arm和aarch64 noarch改為aarch64 ambari-logsearch/pom.xml | ambari-funtest/pom.xml | ambari-metrics/ambari-metrics-grafana/pom.xml | 以下是將amd64或i386 amd64改為arm64 | ambari-agent/pom.xml | ambari-logsearch/pom.xml | ambari-metrics/ambari-metrics-assembly/pom.xml ambari-server/pom.xml contrib/views/ambari-views-package/pom.xml ambari-client/python-client/pom.xml ambari-shell/ambari-python-shell/pom.xml pom.xml | 以下將x86改為aarch64 | ambari-agent/pom.xml ambari-metrics/ambari-metrics-assembly/pom.xml ambari-server/pom.xml |
在ambari-funtest/pom.xml的plugins中加入 <plugin> <groupId>org.vafer</groupId> <artifactId>jdeb</artifactId> <version>1.0.1</version> <executions> <execution> <!--Stub execution on direct plugin call - workaround for ambari deb build process--> <id>stub-execution</id> <phase>none</phase> <goals> <goal>jdeb</goal> </goals> </execution> </executions> <configuration> <skip>true</skip> <attach>false</attach> <submodules>false</submodules> <controlDir>${project.basedir}/../src/main/package/deb/control</controlDir> </configuration> </plugin> |
在ambari-logsearch/pom.xml的plugins標(biāo)簽內(nèi)加入 <plugin> <groupId>org.vafer</groupId> <artifactId>jdeb</artifactId> <version>1.0.1</version> <executions> <execution> <!--Stub execution on direct plugin call - workaround for ambari deb build process--> <id>stub-execution</id> <phase>none</phase> <goals> <goal>jdeb</goal> </goals> </execution> </executions> <configuration> <skip>true</skip> <attach>false</attach> <submodules>false</submodules> <controlDir>${project.basedir}/../src/main/package/deb/control</controlDir> </configuration> </plugin> |
在ambari-metrics/ambari-metrics-grafana/pom.xml 的plugins標(biāo)簽內(nèi)加入 <plugin> <groupId>org.vafer</groupId> <artifactId>jdeb</artifactId> <version>1.0.1</version> <executions> <execution> <!--Stub execution on direct plugin call - workaround for ambari deb build process--> <id>stub-execution</id> <phase>none</phase> <goals> <goal>jdeb</goal> </goals> </execution> </executions> <configuration> <skip>true</skip> <attach>false</attach> <submodules>false</submodules> <controlDir>${project.basedir}/../src/main/package/deb/control</controlDir> </configuration> </plugin> |
在ambari-metrics/pom.xml中加入 
將ambari-admin/pom.xml中的node版本改為已安裝版本 
將ambari-admin/src/main/resources/ui/admin-web/package.json中的karma-phantomjs-launcher刪除,將phantomjs改為安裝版本 
將ambari-metrics/ambari-metrics-storm-sink/pom.xml中storm版本修改 
將ambari-web/config.coffee中的paths鍵值對(duì)刪除 刪除后如下圖: 
將ambari-web/package.json中的ember-handlebars-brunch修改為github鏈接 "ember-precompile-brunch": "git://github.com/icholy/ember-handlebars-brunch.git#540127137296a09601cbd215dcf4da4d27bcfb9e", |

4.2.2 Maven打包編譯 mvn versions:set -DnewVersion=2.6.1.0.0 pushd ambari-metrics |

mvn versions:set -DnewVersion=2.6.1.0.0 popd |

mvn -B clean install package rpm:rpm -DskipTests -Dpython.ver="python >= 2.6" -Preplaceurl -Drat.ignoreErrors=true |
中間可能會(huì)報(bào)錯(cuò),一般再執(zhí)行 mvn -B install package rpm:rpm -DskipTests -Dpython.ver="python >= 2.6" -Preplaceurl -Drat.ignoreErrors=true |
如果遇見報(bào)錯(cuò): [ERROR] Failed to execute goal org.codehaus.mojo:rpm-maven-plugin:2.1.4:rpm (default-cli) on project ambari-server: RPM build execution returned: '1' executing 執(zhí)行 ln -s /usr/bin/python2.7 /usr/bin/python2.6 mvn -B install package rpm:rpm -DskipTests -Dpython.ver="python >= 2.6" -Preplaceurl -Drat.ignoreErrors=true -rf :ambari-server |
最后得到 
三個(gè)rpm分別在 ambari-2.6.1/ambari-server/target/rpm/ambari-server/RPMS/aarch64 
ambari-2.6.1/ambari-agent/target/rpm/ambari-agent/RPMS/aarch64 
ambari-2.6.1/ambari-metrics/ambari-metrics-timelineservice/target/rpm/ambari-metrics-collector/RPMS/noarch 5、系統(tǒng)配置 無(wú) 6、測(cè)試 注意:如有需求請(qǐng)使用mysql(此選項(xiàng)選擇y)作為元數(shù)據(jù)庫(kù)進(jìn)行操作,一般情況下,后面還要安裝 hive 和 Ranger。 這里不做介紹。 安裝postgresql ambari server 需要一個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)元數(shù)據(jù),默認(rèn)使用的 Postgres 數(shù)據(jù)庫(kù)。默認(rèn)的用戶名和密碼是: ambari/bigdata 。 在rpm路徑下執(zhí)行 yum install ./ambari-server-2.6.1.0-0.aarch64.rpm -y |

啟動(dòng)ambari 如有以下報(bào)錯(cuò): 
修改/usr/sbin/ambari-server中的buildNumber為VERSION 
啟動(dòng)成功根據(jù)提示和需求配置成功后: 只做驗(yàn)證,在自定義元數(shù)據(jù)庫(kù)時(shí)選擇no  
要訪問(wèn)Ambari,請(qǐng)?jiān)L問(wèn): http://{ambari-server-hostname}:8080 初始用戶名/密碼為admin / admin 


7、參考信息 https://collaborate./display/BDTS/Build+and+Install+Apache+Ambari+V2.6.1+on+AArch64
|