分享

【华为云鲲鹏云服务最佳实践】【大数据篇】第011期

 beginnow1 2019-10-27

 1、简介

Ambari  Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。就 Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,但是这里的 Hadoop 是广义,指的是 Hadoop 整个生态圈(例如 HiveHbaseSqoopZookeeper 等), 而并不仅是特指 Hadoop。用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。

Ambari 现在所支持的平台组件也越来越多,例如流行的 SparkStorm 等计算框架,以及资源调度平台 YARN 等,我们都能轻松地通过 Ambari 来进行部署。

Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server  Ambari Agent。简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari  GUI,方便用户了解到集群的各种状态,并进行相应的维护。

官方链接:http://ambari./

2、基础环境

类别

子项

版本

获取地址(方法)

华为云

华为云

虚拟机

RC3916

--

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-JDK8nodejs(0.10.0以上)maven3.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 构建工具)

image.png

image.png

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)
编译时长和配置有关,最短一般一个小时

image.png

phantomjs/deploy中执行:

./package.sh

#生成可用二进制文件

image.png

将此文件拷贝到需要安装的地方声明环境变量即可

/etc/profile中加入:

#phantomjs

export   PATH=$PATH:/usr/local/phantomjs-2.1.1-linux-aarch64/bin

修改后执行:

source /etc/profile

验证

phantomjs -v

image.png

3.3 编译安装 frontend-maven-plugin

git 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

image.png

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

image.png

拉取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

方法二:

wget https://download./pub/fedora/linux/releases/28/Everything/source/tree/Packages/l/leveldb-1.20-1.fc28.src.rpm

yum install mock

yum install snappy-devel

useradd -s /sbin/nologin mockbuild

rpmbuild -ba ~/rpmbuild/SPECS/leveldb.spec

image.png

cd /root/rpmbuild/RPMS/aarch64/

rpm -ivh leveldb-*

image.png

3.5 编译安装leveldbjni

git 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

成功后有如下:

image.png 

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 编译ambari

4.2.1 修改配置文件

将各项配置文件中的x86amd64分别修改为armaarch64

noarch改为aarch64

ambari-logsearch/pom.xml

ambari-funtest/pom.xml

ambari-metrics/ambari-metrics-grafana/pom.xml

以下是将amd64i386 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.xmlplugins中加入

     <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中加入

image.png

将ambari-admin/pom.xml中的node版本改为已安装版本

image.png

将ambari-admin/src/main/resources/ui/admin-web/package.json中的karma-phantomjs-launcher删除,将phantomjs改为安装版本

image.png

ambari-metrics/ambari-metrics-storm-sink/pom.xmlstorm版本修改

image.png

将ambari-web/config.coffee中的paths键值对删除
删除后如下图:

image.png

将ambari-web/package.json中的ember-handlebars-brunch修改为github链接

"ember-precompile-brunch": "git://github.com/icholy/ember-handlebars-brunch.git#540127137296a09601cbd215dcf4da4d27bcfb9e",

image.png

4.2.2 Maven打包编译

mvn versions:set -DnewVersion=2.6.1.0.0

pushd ambari-metrics

image.png

mvn versions:set -DnewVersion=2.6.1.0.0

popd

image.png

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

最后得到

image.png

三个rpm分别在

ambari-2.6.1/ambari-server/target/rpm/ambari-server/RPMS/aarch64

image.png

ambari-2.6.1/ambari-agent/target/rpm/ambari-agent/RPMS/aarch64

image.png

ambari-2.6.1/ambari-metrics/ambari-metrics-timelineservice/target/rpm/ambari-metrics-collector/RPMS/noarchimage.png

5、系统配置

6、测试

注意:如有需求请使用mysql(此选项选择y)作为元数据库进行操作,一般情况下,后面还要安装 hive  Ranger 这里不做介绍。

安装postgresql

ambari server 需要一个数据库存储元数据,默认使用的 Postgres 数据库。默认的用户名和密码是: ambari/bigdata 

yum install postgresql*

 rpm路径下执行

yum install   ./ambari-server-2.6.1.0-0.aarch64.rpm -y

image.png

启动ambari

Ambari-server setup

如有以下报错:

image.png

修改/usr/sbin/ambari-server中的buildNumberVERSION

image.png

启动成功根据提示和需求配置成功后:

只做验证,在自定义元数据库时选择no

 image.png

ambari-server start

image.png

要访问Ambari,请访问: 

http://{ambari-server-hostname}:8080

初始用户名/密码为admin / admin

image.png

image.png

image.png

7、参考信息

https://collaborate./display/BDTS/Build+and+Install+Apache+Ambari+V2.6.1+on+AArch64

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约