1、简介 Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。就 Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等), 而并不仅是特指 Hadoop。用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。 Ambari 现在所支持的平台组件也越来越多,例如流行的 Spark,Storm 等计算框架,以及资源调度平台 YARN 等,我们都能轻松地通过 Ambari 来进行部署。 Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent。简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。 官方链接:http://ambari./ 2、基础环境 类别 | 子项 | 版本 | 获取地址(方法) | 华为云 华为云 | 虚拟机 | 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、依赖安装 参照: 《华为云鲲鹏云服务最佳实践-JDK-1.8.0 安装配置指南》 《华为云鲲鹏云服务最佳实践-node 8.12.0 安装配置指南》 《华为云鲲鹏云服务最佳实践-maven-3.6.0 安装配置指南》 3.1 安装编译前置依赖
环境需求 yum install rpm-build (用于创建rpm的二进制软件包和源码软件包) yum install gcc-c++ yum install python-devel (安装源外的python类库,或程序编译需要链接libpythonXX.(a|so)的情况) yum install git (开源的分布式版本控制系统) |
安装依赖 npm install -g bower (前端包管理工具) npm install -g gulp (基于node.js的一个前端自动化构建工具) npm install -g brunch (HTML5 构建工具) |


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 (和网速有关,可能会较久) 修改Makefile优化级别为O2: phantomjs/src/qt/qtbase/src/gui/Makefile 编译 ./build.py -c -j $(getconf _NPROCESSORS_ONLN) 编译时长和配置有关,最短一般一个小时 |

在phantomjs/deploy中执行: 
将此文件拷贝到需要安装的地方声明环境变量即可 在/etc/profile中加入: #phantomjs export PATH=$PATH:/usr/local/phantomjs-2.1.1-linux-aarch64/bin 修改后执行: source /etc/profile |
验证 
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 将各个环境变量声明 export LEVELDB_HOME=/usr/include/leveldb export SNAPPY_HOME=/usr/local/snappy-1.0.5 export LEVELDBJNI_HOME=/usr/local/leveldbjni 进行编译 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 修改配置文件将各项配置文件中的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标签内加入 <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标签内加入 <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键值对删除 删除后如下图: 
将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 |
中间可能会报错,一般再执行 mvn -B install package rpm:rpm -DskipTests -Dpython.ver="python >= 2.6" -Preplaceurl -Drat.ignoreErrors=true |
如果遇见报错: [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 执行 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 |
最后得到 
三个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、系统配置 无 6、测试 注意:如有需求请使用mysql(此选项选择y)作为元数据库进行操作,一般情况下,后面还要安装 hive 和 Ranger。 这里不做介绍。 安装postgresql ambari server 需要一个数据库存储元数据,默认使用的 Postgres 数据库。默认的用户名和密码是: ambari/bigdata 。 在rpm路径下执行 yum install ./ambari-server-2.6.1.0-0.aarch64.rpm -y |

启动ambari 如有以下报错: 
修改/usr/sbin/ambari-server中的buildNumber为VERSION 
启动成功根据提示和需求配置成功后: 只做验证,在自定义元数据库时选择no  
要访问Ambari,请访问: http://{ambari-server-hostname}:8080 初始用户名/密码为admin / admin 


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