暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

大数据管理平台Ambari3.0最新版本二次开发入门实践指南

大数据从业者 2025-04-28
855

前言

Apache Ambari项目初期旨在通过开发用于配置、管理、监控Hadoop集群的软件,使Hadoop集群管理更加简洁方便。因为Ambari灵活的插件化设计机制,现在已经广泛用于支持更多其他大数据组件的管理,用户可以根据需要自定义组件。Amabri提供直观且便于使用的Web管理界面,也提供RESTful API支持。

数十年来,Ambari已经被很多大数据平台厂商(如Hortonworks)产品集成使用,本文主要介绍Ambari3.0最新版本的源码编译、安装部署、配置管理、组件集成等内容。欢迎关注微信公众号:大数据从业者

源码编译

工欲善其事必先利其器,对于二次开发,源码编译作为入门步骤、必不可少。具体的源码编译打包命令如下:(自定义是否打rpm包)

    mvn -B -T 2C clean install package rpm:rpm -Drat.skip=true -DskipTests -Dmaven.test.skip=true -Dfindbugs.skip=true -Dcheckstyle.skip=true

    详细报错信息如下:

      Unable to build the RPMError while executing process. Cannot run program "rpmbuild" (in directory "/home/mySourceCode/ambari/target/rpm/ambari/SPECS"): error=2No such file or directory

      根本原因:缺少rpmbuild命令

      解决方法: 

        yum search rpm-build
        yum install rpm-build

        查看ambari-server编译打包结果(rpm、tar):

          ll ambari-server/target/rpm/ambari-server/RPMS/x86_64
          ll ambari-server/target/

          查看ambari-server rpm对应spec文件,可以知道具体的安装操作过程:

            ll ambari-server/target/rpm/ambari-server/SPECS/

             查看ambari-agent编译打包结果(rpm、tar):

            查看ambari-agent rpm对应spec文件,可以知道具体的安装操作过程:

              ll ambari-agent/target/rpm/ambari-agent/SPECS/

              RPM方式部署

              设置远端yum repo

                vim /etc/yum.repos.d/ambari_remote_repo.repo
                [ambari_remote_repo]
                name=ambari
                baseurl=http://FelixZhnew/ambariRepo/
                enabled=1
                gpgcheck=0 

                设置本地yum repo(非必选,适用于单节点)

                  vim /etc/yum.repos.d/ambari_repo.repo
                  [ambari_local_repo]
                  name=Ambari Local Repository
                  baseurl=file:///home/ambariRepo
                  enabled=1
                  gpgcheck=0 

                  制作rpm repo

                    mkdir /home/ambariRepo
                    cp ambari-server/target/rpm/ambari-server/RPMS/x86_64/ambari-server-3.0.0.0-0.x86_64.rpm /home/ambariRepo/
                    cp ambari-agent/target/rpm/ambari-agent/RPMS/x86_64/ambari-agent-3.0.0.0-0.x86_64.rpm /home/ambariRepo/
                    cd /home/ambariRepo/
                    createrepo . 

                    部署配置httpd暴漏repo(也可以用nginx等)

                      yum install httpd
                      vim /etc/httpd/conf/httpd.conf

                      配置ServerName、DocumentRoot、Directory等内容:

                        systemctl start httpd
                         
                        yum clean all
                        yum repolist

                         安装部署

                          yum install ambari-server
                          yum install ambari-agent 

                           Tar方式部署

                          注意:适用于研发调试环境

                          根据ambari-server spec文件梳理整合的ambari-server安装过程详细流程如下:

                            cd ambari-server/target/ambari-server-3.0.0.0.0-dist
                            cp -r etc/init /etc/
                            cp etc/init.d/ambari-server /etc/init.d/
                            cp -r etc/ambari-server/ /etc/
                            cp usr/sbin/* /usr/sbin/
                            cp -r usr/lib/ambari-server /usr/lib
                            cp -r var/lib/ambari-server /var/lib/
                            sh /var/lib/ambari-server/install-helper.sh install

                            根据ambari-agent spec文件梳理整合的ambari-agent安装过程详细流程如下:

                              cd ambari-agent/target/ambari-agent-3.0.0.0.0
                              cp etc/init/ambari-agent.conf /etc/init/
                              cp etc/init.d/ambari-agent /etc/init.d
                              cp -r etc/ambari-agent/ /etc/
                              cp -r usr/lib/ambari-agent/ /usr/lib
                              cp -r var/lib/ambari-agent/ /var/lib/
                              /var/lib/ambari-agent/install-helper.sh install

                              数据库部署

                              可以使用mysql或者postgresql两种类型数据库,笔者这里使用mysql。

                                yum install -y python3-psycopg2
                                yum -y install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
                                rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
                                yum -y install mysql-server
                                systemctl start mysqld.service
                                systemctl enable mysqld.service

                                修改数据库默认密码:

                                  sudo grep 'temporary password' /var/log/mysqld.log
                                  ALTER USER 'root'@'localhost' IDENTIFIED BY 'FelixZh#2024';
                                  FLUSH PRIVILEGES; 

                                  创建用户及相关数据库

                                    -- Create Ambari user and grant privileges
                                    CREATE USER 'ambari'@'localhost' IDENTIFIED BY 'FelixZh#2024';
                                    GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'localhost';
                                    CREATE USER 'ambari'@'%' IDENTIFIED BY 'FelixZh#2024';
                                    GRANT ALL PRIVILEGES ON *.* TO 'ambari'@'%';
                                    -- Create required databases
                                    CREATE DATABASE ambari CHARACTER SET utf8 COLLATE utf8_general_ci;
                                    CREATE DATABASE hive;
                                    CREATE DATABASE ranger;
                                    CREATE DATABASE rangerkms;
                                    -- Create service users
                                    CREATE USER 'hive'@'%' IDENTIFIED BY 'FelixZh#2024';
                                    GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%';
                                    CREATE USER 'ranger'@'%' IDENTIFIED BY 'FelixZh#2024';
                                    GRANT ALL PRIVILEGES ON *.* TO 'ranger'@'%' WITH GRANT OPTION;
                                    CREATE USER 'rangerkms'@'%' IDENTIFIED BY 'FelixZh#2024';
                                    GRANT ALL PRIVILEGES ON rangerkms.* TO 'rangerkms'@'%';

                                    AmbariServer配置启动

                                    导入ambari schema到上述部署的数据库中

                                      mysql -uambari -pFelixZh#2024 ambari < /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql 

                                      配置ambari-server

                                        mkdir /usr/share/java
                                        wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar -O /usr/share/java/mysql-connector-java.jar
                                        ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar
                                        echo "server.jdbc.url=jdbc:mysql://localhost:3306/ambari?useSSL=true&verifyServerCertificate=false&enabledTLSProtocols=TLSv1.2" >> /etc/ambari-server/conf/ambari.properties
                                        ambari-server setup -s \
                                          -j /home/pkg/jdk1.8.0_221/ \
                                          --ambari-java-home /home/pkg/jdk-17.0.2/ \
                                          --database=mysql \
                                          --databasehost=localhost \
                                          --databaseport=3306 \
                                          --databasename=ambari \
                                          --databaseusername=ambari \
                                          --databasepassword=FelixZh#2024

                                        启动ambari-sevrer

                                          ambari-server start

                                            http://10.121.198.221:8080/
                                            admin/admin

                                            AmbariAgent配置启动

                                            配置agent上报server的主机名

                                              vim /etc/ambari-agent/conf/ambari-agent.ini
                                              hostname=FelixZhnew

                                              启动ambari-agent

                                                ambari-agent start

                                                Ambari组件集成

                                                目前Ambari3.0版本stacks已经删除HDP组件集成的相关内容,主要是因为HDP被CDH收购之后不再开源了。所以,目前只保留BIGTOP组件集成。BIGTOP组件集成的安装部署操作如下:

                                                  cd /home/ambariRepo
                                                  wget -r -np -nH --cut-dirs=4 --reject 'index.html*' https://www.apache-ambari.com/dist/bigtop/3.3.0/rocky8/

                                                  根据Ambari向导安装组件即可,效果演示如下:

                                                  BIGTOP适配的组件有限,目前支持列表如下(对于不支持的组件,需要二次开发集成合入):

                                                  注意:本人提供免费的HDP版本资源包,如有需要请自行到公众号大数据从业者发送 hdp 领取下载地址。

                                                  结束

                                                  本文主要介绍Ambari3.0版本源码编译、安装部署、配置管理、组件集成等内容。二次开发主要集中在stacks中服务包内容和对应服务的RPM包修改。后续更新二次开发相关内容。欢迎关注大数据从业者公众号!

                                                  文章转载自大数据从业者,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                  评论