Ambari 系统管理 (Ambari Administration) 之二

两年了,ambari终于发布了2.7.6新版本 2021/11/16,ambari终于推出了2.7.6版本,该版本相对2.7.5版本以来,共有26个contributors提交了114个commits以及修改了557个文件。 该版本主要修复了: Spring组件的安全漏洞(AMBARI-25571. Vulnerable Spring components in Ambari - CVE-2020-5398, CVE-2020-5421) 升级Grafana以修复相关漏洞(AMBARI-25547 Update Grafana version t 阅读详情

(继 Ambari 系统管理 (Ambari Administration)  之一: https://blog.youkuaiyun.com/devalone/article/details/80769775)

 

9. 迁移 ZooKeeper Server (Moving the ZooKeeper Server)



将 ZooKeeper server 迁移到一部新的主机上

步骤:

    (1) 到 Ambari Web > Service Actions 页面,停止 ZooKeeper server

    (2) Ambari Web > Hosts 页面,单击要安装新 ZooKeeper server 的主机

    (3) 在新建 ZooKeeper server 的 Summary 页面,单击 Add > ZooKeeper Server

    (4) 在新 ZooKeeper server 上更新下列属性(参考现有的 ZooKeeper server 设置)
    
        ● ha.zookeeper.quorum
        ● hbase.zookeeper.quorum
        ● templeton.zookeeper.hosts
        ● yarn.resourcemanager.zk-address
        ● hive.zookeeper.quorum
        ● hive.cluster.delegation.token.store.zookeeper.connectString

    (5) 在 Ambari Web > Hosts 页面,单击原来的 ZooKeeper server 主机

    (6) 在 ZooKeeper > Service Actions > Delete Service 页面删除原来的 ZooKeeper server
    
    (7) 保存 HDFS 名称空间
    
    (8) 重新启动新的 ZooKeeper server 和 the Hive service

下一步:
    查看并确认所有建议的配置修改
    
    
10. 配置 LZO 压缩 (Configuring LZO Compression)
-----------------------------------------------------------------------------------------------------------------------------------------
LZO 是无损数据压缩库,与压缩率比速度优先。Ambari 默认既不安装也不启用 LZO 压缩库,因此必须明确配置才可使用。在 HDP 集群上使用 LZO 压缩,
必须在 core-site.xml 中配置 LZO, 并在整个集群上安装 LZO 压缩库。


10.1 启用 LZO (Enabling LZO)
-----------------------------------------------------------------------------------------------------------------------------------------
LZO 压缩库是 GPL 软件,Ambari 必须明确配置下载这些库文件并安装到整个集群上。LZO 压缩库在一个单独的仓库中,要配置 Ambari 自动下载和安装 LZO
压缩库,遵循下列步骤:

步骤:
    
    ① 重新设置 Ambari Server 来配置 Ambari 来启动自动下载和安装 LZO 压缩库
    
        ambari-server setup
        ...
        GPL License for LZO: https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.
        html
        Enable Ambari Server to download and install GPL Licensed LZO packages [y/n]
        (n)?

    ② 提示时,查看 GPL 许可证并选择 y

    ③ 重新启动 Ambari Server
    
        ambari-server restart
        
LZO 压缩库包存储在一个单独的 HDP-GPL 仓库中。现在 Ambari Server 已经配置为下载和安装 LZO 包,必须配置为使用 HDP-GPL 仓库位置。确保安装使用的
HDP-GPL 仓库位置正确:

步骤:
    ① 登录到 Ambari
    
    ② 浏览到 Admin > Stack and Versions
    
    ③ 单击 Versions 选项卡,会看到当前运行到版本,标记为 Current
    
    ④ 单击 Manage Versions
    
    ⑤ 单击列表中匹配 Current 版本到版本
    
    ⑥ 验证安装到 HDP-GPL 仓库指向一个有效到位置。
        如果使用本地仓库安装,请使用 HDP 2.6 仓库获取仓库
        

10.2 使用 Ambari Blueprints 启用 LZO (Enabling LZO with Ambari Blueprints)
-----------------------------------------------------------------------------------------------------------------------------------------
当使用 Ambari 提供集群使用 Blueprints 时,如果 Blueprint 配置调用 LZO, 必须利用额外当步骤配置 Ambari 来下载和安装 LZO 包。Ambari Server 有
一新的安静安装参数用于启用 Ambari 以下载和安装 LZO 压缩库

    ambari-server setup --enable-lzo-under-gpl-license
    
这个标志传递到命令时,Ambari 会从 HDP-GPL 仓库下载并安装 GPL 许可证的 LZO 压缩库。默认情况下,HDP 2.6.4 及以后版本包含 HDP-GPL 仓库位置。
如果安装集群并要求使用本地仓库,参考:

    https://docs.hortonworks.com/HDPDocuments/Ambari-2.6.1.5/bk_ambari-installation/content/hdp_26_repositories.html
    
获取仓库。


10.3 禁用 LZO 库下载和安装 (Disable LZO Library Download and Installation)
-----------------------------------------------------------------------------------------------------------------------------------------
如果不再希望 Ambari 自动下载并安装 LZO 压缩库,可以通过编辑 Ambari Server 属性文件并重启 Ambari Server 来禁用这种行为:

步骤:

    ① 编辑 Ambari Server 属性文件

        vi /etc/ambari-server/conf/ambari.properties
        
    ② 修改 gpl.license.accepted 属性为 false
    
    ③ 重启 Ambari Server
    
        ambari-server restart


10.4 手动安装 LZO (Manually Installing LZO)
-----------------------------------------------------------------------------------------------------------------------------------------
如果不希望 Ambari Server 自动下载并安装 GPL 许可证的 LZO 压缩库,但又打算配置 HDP 组件使用 LZO, 必须确保 LZO 压缩库已安装到集群的每个节点

步骤:

    ① 在集群的每个节点上,配置适应自己操作系统的 HDP-GPL 仓库

    ② 安装 Hadoop LZO 压缩库
    
    RHEL/CentOS/Oracle Linux:
        yum install hadooplzo_2_6_4_0_91.x86_64 hadooplzo_2_6_4_0_91-native.x86_64



10.5 配置 core-site.xml 启用 LZO (Configure core-site.xml for LZO)
-----------------------------------------------------------------------------------------------------------------------------------------
步骤:

    ① 浏览到 Ambari Web > Services > HDFS > Configs 页面,然后展开 Advanced core-site
    
    ② 找到 io.compression.codecs 属性

    ③ 讲下面的值添加到 io.compression.codecs 属性
    
        com.hadoop.compression.lzo.LzoCodec
        
    ④ 添加配置修改描述,然后单机 Save
    
    ⑤ 展开 Custom core-site.xml 节
    
    ⑥ 单击 Add Property
    
    ⑦ 添加 Custom core-site.xml 如下属性
    
        Property Key         io.compression.codec.lzo.class
        Property Value         com.hadoop.compression.lzo.LzoCodec

    ⑧ 单击 Save
    
    ⑨ 添加配置修改到描述,然后单击 Save
    
    ⑩ 重启 HDFS, MapReduce2 和 YARN 服务



10.6 Hive 查询使用压缩 (Using Compression with Hive Queries)
-----------------------------------------------------------------------------------------------------------------------------------------
Hive 查询运行压缩要求创建 LZO 文件。创建 LZO 文件,使用如下方法之一。




10.6.1 创建 LZO 文件 (Create LZO Files)
-----------------------------------------------------------------------------------------------------------------------------------------
    
    ① 创建 LZO 文件作为 Hive 查询的输出

    ② 使用 lzo 命令行工具或自定义的 Java 代码为 .lzo 文件生成 lzo.index

    Hive Query 参数:
    查询字符串之前设置如下参数:
    
    SET mapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzoCodec
    SET hive.exec.compress.output=true
    SET mapreduce.output.fileoutputformat.compress=true
    
    范例:
    
    hive -e "SET mapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzoCodec;SET hive.exec.compress.output=true;SET mapreduce.
    output.fileoutputformat.compress=true;"
    

10.6.2 编写自定义 Java 代码创建 LZO 文件 (Write Custom Java to Create LZO Files)
-----------------------------------------------------------------------------------------------------------------------------------------
    
    ① 创建文本文件作为 Hive 查询的输出
    
    ② 编写自定义 Java 代码来
    
        ● 将 Hive 查询生成的文本文件转换为 .lzo 文件
        ● 为 .lzo 文件创建 lzo.index 文件


    Hive Query 参数:
    查询字符串之前设置如下参数:

    SET hive.exec.compress.output=false SET mapreduce.output.fileoutputformat.compress=false

    范例:
    hive -e "SET hive.exec.compress.output=false;SET mapreduce.output.fileoutputformat.compress=false;<query-string>"



11. 使用现有数据库 (Using Existing Databases)
-----------------------------------------------------------------------------------------------------------------------------------------
Ambari 默认安装 PostgreSQL, MySQL, 和 Derby 数据库分别用于 Ambari, Hive, 和 Oozie. 可以创建一个新的或现有的,非默认的数据库实例用于这些组件
为了使 Ambari 可以连接到 Hive 或 Oozie 使用的数据库,必须在通过运行 ambari-server setup 设置 Ambari Server 之前,下载并设置好数据库连接器。



11.1 使用现有数据库 —— Ambari (Using Existing Databases - Ambari)
-----------------------------------------------------------------------------------------------------------------------------------------

    
    ■ Using Ambari with Oracle
    -------------------------------------------------------------------------------------------------------------------------------------
    
    
    
    ■ Using Ambari with MySQL/MariaDB
    -------------------------------------------------------------------------------------------------------------------------------------
    步骤:
        ① 在 Ambari Server 主机上:
        
            a. 从 MySQL 下载 MySQL Connector/JDBC 驱动
            b. Ambari Server 主机上运行:
                
                ambari-server setup --jdbc-db=mysql --jdbc-driver=/path/to/mysql/mysqlconnector-java.jar
        
            c. 确认 .jar 文件在 Java 的 share 目录
            
                ls /usr/share/java/mysql-connector-java.jar
                
            d. 确认 .jar 文件具有合适的许可权限 —— 644
        
        ② 为 Ambari 创建用户并授予权限
        
            ● 例如,使用 MySQL database admin 工具:
                
                # mysql -u root -p
                CREATE USER '<AMBARIUSER>'@'%' IDENTIFIED BY '<AMBARIPASSWORD>';
                GRANT ALL PRIVILEGES ON *.* TO '<AMBARIUSER>'@'%';
                CREATE USER '<AMBARIUSER>'@'localhost' IDENTIFIED BY '<AMBARIPASSWORD>';
                GRANT ALL PRIVILEGES ON *.* TO '<AMBARIUSER>'@'localhost';
                CREATE USER '<AMBARIUSER>'@'<AMBARISERVERFQDN>' IDENTIFIED BY '<AMBARIPASSWORD>';
                GRANT ALL PRIVILEGES ON *.* TO '<AMBARIUSER>'@'<AMBARISERVERFQDN>';
                FLUSH PRIVILEGES;
            
            ● 这里 <AMBARIUSER> 是 Ambari 用户名, <AMBARIPASSWORD> 是 Ambari 的用户密码,<AMBARISERVERFQDN> 是 Ambari Server 主机的 FQDN
        
        ③ 载入 Ambari Server database schema
            
            ● 必须使用 schema 脚本将 Ambari database schema 载入到 MySQL/MariaDB 数据库。在 Ambari-DDL-MySQL-CREATE.sql 文件同一位置下运行,
            应该在 Ambari Server 主机的 /var/lib/ambari-server/resources/ 目录下找到 Ambari-DDL-MySQL-CREATE.sql 文件。
            
                mysql -u <AMBARIUSER> -p
                CREATE DATABASE <AMBARIDATABASE>;
                USE <AMBARIDATABASE>;
                SOURCE Ambari-DDL-MySQL-CREATE.sql;

            ● 此处 <AMBARIUSER> 是 Ambari 用户名,<AMBARIDATABASE> 是 Ambari 数据库名称
    
        
        ④ 设置 Ambari Server 时,选择
        
        Advanced Database Configuration
        > Option [3] MySQL/MariaDB
        
        并输入在第二步定义的凭证:用户名,密码,数据库名称
    
    
    
    ■ Using Ambari with PostgreSQL
    -------------------------------------------------------------------------------------------------------------------------------------
    
    
    
    ■ Troubleshooting Existing Databases with Ambari
    -------------------------------------------------------------------------------------------------------------------------------------
    


11.2 使用新建或现有数据库 —— Hive (Using New and Existing Databases - Hive)
-----------------------------------------------------------------------------------------------------------------------------------------



    ■ Using Hive with Oracle
    -------------------------------------------------------------------------------------------------------------------------------------




    ■ Using Hive with MySQL
    -------------------------------------------------------------------------------------------------------------------------------------
    
    
    
    ■ Using Hive with PostgreSQL
    -------------------------------------------------------------------------------------------------------------------------------------    
    
    
    ■ Troubleshooting Existing Databases with Hive
    -------------------------------------------------------------------------------------------------------------------------------------    
    
    
    
    
11.3 使用现有数据库 —— Oozie (Using Existing Databases - Oozie)
-----------------------------------------------------------------------------------------------------------------------------------------    



    ■ Using Oozie with Oracle
    -------------------------------------------------------------------------------------------------------------------------------------




    ■ Using Oozie with MySQL
    -------------------------------------------------------------------------------------------------------------------------------------
    
    
    
    ■ Using Oozie with PostgreSQL
    -------------------------------------------------------------------------------------------------------------------------------------    
    
    
    ■ Troubleshooting Existing Databases with Oozie
    -------------------------------------------------------------------------------------------------------------------------------------
    
    
    
12 设置 Ambari 使用 Internet 代理服务器 (Setting up Ambari to use an Internet Proxy Server)
-----------------------------------------------------------------------------------------------------------------------------------------    
如果计划使用公共仓库(public repositories) 安装 Ambari 并部署 Hadoop 安装栈到集群上,必须提供 Ambari 和集群主机 Internet 访问以重那些仓库
获取软件。

    ● Ambari Server: 使用 Internet 访问来验证仓库。
    
    ● yum (或类似的包管理器等价物,取决于操作系统): 从仓库中执行软件安装

因此,如果环境中要求使用 Internet 代理服务器访问,就必须配置 Ambari Server 组件和所有主机上的 yum 使用代理服务器。    

为 Ambari Server 配置代理服务器:

步骤:
    (1) 在 Ambari Server 主机上,停止 Ambari Server
    
        ambari-server stop
        
    (2) 添加代理设置到 /var/lib/ambari-server/ambarienv.sh 脚本
    
        -Dhttp.proxyHost=<yourProxyHost> -Dhttp.proxyPort=<yourProxyPort>
        
    (3) 可选地,阻止某些主机通过代理服务器访问,定义一个排除主机列表
    
        -Dhttp.nonProxyHosts=<pipe|separated|list|of|hosts>
    
    (4) 如果代理服务器需要认证,添加用户名和密码,如下:
    
        -Dhttp.proxyUser=<username> -Dhttp.proxyPassword=<password>
        
    (5) 重启 Ambari Server 使配置生效
    
设置 yum  使用代理服务器取决于环境和操作系统。下面是一些指导,具体参考操作系统文档

    (1) 在集群的每个主机上,在 /etc/yum.conf 文件中指定代理设置,添加如下条目:
    
        proxy=http://<yourProxyHost>:<yourProxyPort>
        
    (2) 如果代理服务器要求认证,添加用户名和密码,如下所示:
    
        enableProxyAuth=1
        proxy_username=<username>
        proxy_password=<password>
    
    (3) 保存 yum 配置文件





13 配置网络端口号 (Configuring Network Port Numbers)
-----------------------------------------------------------------------------------------------------------------------------------------



13.1 默认的网络端口号 —— Ambari (Default Network Port Numbers - Ambari)
-----------------------------------------------------------------------------------------------------------------------------------------


                    Default Network Port Numbers - Ambari
    +===============+===================+=======================+===========+===================================================+
    | Service        | Servers            | Default Port            | Protocol    | Description                                        |
    +---------------+-------------------+-----------------------+-----------+---------------------------------------------------+
    | Ambari Server    | Ambari Server     | 8080                    | http        | Interface to Ambari Web and Ambari REST API        |
    +---------------+-------------------+-----------------------+-----------+---------------------------------------------------+
    | Ambari Server    | Ambari Server     | 8440                    | https        | Handshake Port for Ambari Agents to Ambari Server    |
    +---------------+-------------------+-----------------------+-----------+---------------------------------------------------+
    | Ambari Server    | Ambari Server     | 8441                    | https        | Registration and Heartbeat Port for Ambari Agents    |
    |                |                    |                        |            | to Ambari Server                                    |
    +---------------+-------------------+-----------------------+-----------+---------------------------------------------------+
    | Ambari Agent    | All hosts running    | 8670                    | tcp        | Ping port used for alerts to check the health of    |
    |                | Ambari Agents        | You can change the    |            | the Ambari Agent                                    |
    |                |                    | Ambari Agent ping port|            |                                                    |
    |                |                    | in the Ambari    Agent    |            |                                                    |
    |                |                    | configuration            |            |                                                    |
    +---------------+-------------------+-----------------------+-----------+---------------------------------------------------+



13.2 可选项:修改默认的 Ambari Server 端口号 (Optional: Changing the Default Ambari Server Port)
-----------------------------------------------------------------------------------------------------------------------------------------
默认情况下, Ambari Server 使用 8080 端口访问 Ambari Web UI 和 the REST API. 要修改这个端口,必须编辑 Ambari 属性文件。

修改端口号时 Ambari Server 不应运行。第一次启动 Ambari Server 之前编辑 ambari.properties , 或在编辑属性之前停止 Ambari Server

步骤:

    ① 在 Ambari Server 主机上,使用文本编辑器打开 /etc/ambari-server/conf/ambari.properties
    ② 设置 client API port 属性为期望的端口值
    
        client.api.port=<port_number>
        
    ③ 启动或重启 Ambari Server, 通过新配置的端口访问:
    
        http://<your.ambari.server>:<port_number>
        
    
13.3 可选项:修改默认的 Ambari Server-Agent 端口号 (Optional: Changing the Ambari Server-Agent Port)
-----------------------------------------------------------------------------------------------------------------------------------------
默认情况下,Ambari Server 使用 8087 端口与 Ambari Agent 通信。要修改这个端口,必须编辑 Ambari 属性文件

步骤:
    ① 在 Ambari Server 主机上,使用文本编辑器打开 /etc/ambari-server/conf/ambari.properties
    ② 添加下列属性并设置为想要的端口号
        
        security.server.two_way_ssl.port=5222
        security.server.one_way_ssl.port=5223
        
    ③ 在每个 Ambari Agent 主机上,打开 /etc/ambari-agent/conf/ambariagent.ini 文件

    ④ 添加如下属性并设置为要求的端口号值
        
        url_port=5223 s
        ecured_url_port=5222
        
    ⑤ 启动或重启 Ambari Server. 现在 Ambari Agent 可以通过新配置的端口访问 Ambari Server
    
        http://<your.ambari.server>:<port_number>
        
    

14 修改 JDK 版本 (Change the JDK Version)
-----------------------------------------------------------------------------------------------------------------------------------------
在初始 Ambari Server 安装期间,选择了 JDK 或提供本机上已安装的自定义 JDK 路径。安装集群之后,可能要改变 JDK 版本。

JDK 的选择取决于计划使用哪个 HDP Stack 安装到集群上。下面的安装栈要求的 JDK 版本:

    HDP 2.3, 2.4 or 2.5 JDK 1.7 or JDK 1.8

要改变现有集群的 JDK 版本:

步骤:
    ① 重新运行 Ambari Server 设置
        
        ambari-server setup
        
    ② 在改变 JDK 提示部分,输入 y
        
        Do you want to change Oracle JDK [y/n] (n)? y
        
    ③ 在提示选择 JDK 步骤,输入 1 来改变 JDK 版本为 v1.8
        
        [1] - Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
        [2] - Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
        [3] - Custom JDK
    
    ④ 如果选择 Oracle JDK 1.8 或 Oracle JDK 1.7,选择的 JDK 会下载并自动安装到 Ambari Server 主机上。该选项要求有 internet 连接。必须安装
    这个 JDK 到集群中所有机器的相同路径上。
    
    ⑤ 如果选择 Custom JDK, 验证或在集群的所有主机添加自定义 JDK 路径。如果要使用 OpenJDK 或者没有 Internet 连接选择这个选项(以及已经在所有
    主机上预先安装了 JDK)。
    
    ⑥ 设置完成之后,必须重新启动每个组件以使新 JDK 能够被用于 Hadoop 服务。
    
    ⑦ 利用 Ambari Web UI, 完成如下任务:
    
        ● 重启每个组件
        
        ● 重启所有服务


    重要提示:
    ------------------------------------------------------------------------------------------------------------------------------------
    必须也更新 Ambari Server 和集群所有主机上的 JCE 安全策略文件以匹配新的 JDK 版本。如果正运行着 Kerberos,而没有更新 JCE 以匹配 JDK,
    启动服务时会有问题。




15 利用 Ambari 蓝图 (Using Ambari Blueprints)
-----------------------------------------------------------------------------------------------------------------------------------------
Ambari Blueprints 提供 API 用于执行集群安装。可以构建可重复使用的 "blueprint" 来定义使用哪个安装毡,服务组件如何部署到集群上,以及设置什么
配置信息。


        +---------------+        +---------------+        +---------------+
        | STACK            |    +    | COMPONENT        |    =    | BLUEPRINT        |
        | DEFINITION    |         | LAYOUT        |        |                |
        +---------------+        +---------------+        +---------------+

                                            +---------------+
        +---------------+                    |                |
        | BLUEPRINT        |    INSTANTIATE        |     CLUSTER        |
        |                |    ----------->    |                |
        +---------------+                    +---------------+


设置好蓝图之后,可以通过提供要使用的主机列表调用 API 来实例化集群。Ambari Blueprint 框架提升可重用性,以及无需 UI 交互的自动化集群安装。

更多信息参考:

        https://cwiki.apache.org/confluence/display/AMBARI/Blueprints



16 优化 Ambari 性能 (Tuning Ambari Performance)
-----------------------------------------------------------------------------------------------------------------------------------------
对于超过 100 个节点的集群,考虑如下优化选项:


    ■ 基于集群节点数量调整堆大小以提升可用内存
    -------------------------------------------------------------------------------------------------------------------------------------
    
        ① 在 Ambari Server 主机上,编辑 ambari-env.sh 文件
        
            vi /var/lib/ambari-server/ambari-env.sh
            
        ② 对于 AMBARI_JVM_ARGS 变量,使用类似羡慕的值替换掉默认的 -Xmx2048m 值
        
            -Xmx4GB -Xmn2GB
            
        基于集群中节点的数量,使用如下建议作为指导    

        +-------------------+---------------+---------------+
        | Cluster Nodes        | Xmx value        | Xmn value        |
        +-------------------+---------------+---------------+
        | 100 - 400            | 4 GB            | 2 GB            |
        +-------------------+---------------+---------------+
        | 400 - 800            | 4 GB            | 2 GB            |
        +-------------------+---------------+---------------+
        | 800 - 1200        | 8 GB            | 2 GB            |
        +-------------------+---------------+---------------+
        | 1200 - 1600        | 16 GB            | 2.4 GB        |
        +-------------------+---------------+---------------+


        
    ■ 计算新的、更大的 cache 大小,使用如下关系
    -------------------------------------------------------------------------------------------------------------------------------------
    
    ecCacheSizeValue=60*<cluster_size>
    
    这里 <cluster_size> 是集群的节点数量



    ■ 在 Ambari Server 主机上,在 /etc/ambari-server/conf/ambari-properties 文件中,添加如下属性和值:
    -------------------------------------------------------------------------------------------------------------------------------------

    server.ecCacheSize=<ecCacheSizeValue>
    
    这里 <ecCacheSizeValue> 是之前计算的值,基于集群节点数量。



    ■ 添加如下属性调整 JDBC 连接池设置:
    -------------------------------------------------------------------------------------------------------------------------------------

    server.jdbc.connection-pool.acquisition-size=5
    server.jdbc.connection-pool.max-age=0
    server.jdbc.connection-pool.max-idle-time=14400
    server.jdbc.connection-pool.max-idle-time-excess=0
    server.jdbc.connection-pool.idle-test-interval=7200


    ■ 如果使用 MySQL 作为 Ambari 数据库,在 MySQL 配置中,提升 wait_timeout 和 interacitve_timeout 为 8 hours (28800),
    max.connections 值从 32 提升到 128.
    
        重要提示:
        ---------------------------------------------------------------------------------------------------------------------------------
        Ambari 配置 server.jdbc.connectionpool.max-idle-time 和 server.jdbc.connection-pool.idle-test-interval 必须低于 MySQL 侧的
        wait_timeout 和 interactive_timeout 设置,这是至关重要的。如果选择降低这些超时值,在 Ambari 的配置中相应地调整
        downserver.jdbc.connection-pool.max-idle-time 和 server.jdbc.connectionpool.idle-test-interval, 这样他们就低于 wait_timeout 和
        interactive_timeout
    
    
执行一个或多个选项修改之后,重启 Ambari server 使修改的选项生效

    ambari-server restart
    
如果使用 Ambari Metrics 服务,可能考虑从默认的嵌入模式切换到分布模式,以及其他调优选项。

更多信息参考:

    https://docs.hortonworks.com/HDPDocuments/Ambari-2.6.1.5/bk_ambari-operations/content/ams_performance_tuning.html
    

    
16.1 清除 Ambari Server 数据库历史 (Purging Ambari Server Database History)
-----------------------------------------------------------------------------------------------------------------------------------------
经过几个月在大型集群上的操作,Ambari Server 可能在其数据库中累积了大量的历史数据,这会导致 UI 性能降低。

为了解决这个问题,下面的 Ambari Server CLI 命令已经实现了可以自动从 Ambari Server 上移除历史记录。db-purge-history 命令需要两个参数,集群
名称,以及要清除记录的最早日期。

范例:
    下面的例子中,我们要清除 August 1st, of 2017 以前的历史记录,集群名称为 ‘Prod’
    
    ① 停止 Ambari Server
    
        # ambari-server stop
        Using python /usr/bin/python
        Stopping ambari-server
        Waiting for server stop...
        Ambari Server stopped

    
    ② 运行 db-purge-history 命令
    
        # ambari-server db-purge-history --cluster-name Prod --from-date 2017-08-01
        Using python /usr/bin/python
        Purge database history...
        Ambari Server configured for Embedded Postgres. Confirm you have made a
        backup of the Ambari Server database [y/n] y
        Ambari server is using db type Embedded Postgres. Cleanable database entries
        older than 2017-08-01 will be purged. Proceed [y/n] y
        Purging historical data from the database ...
        Purging historical data completed. Check the ambari-server.log for details.
        Ambari Server 'db-purge-history' completed successfully.
    
    
    
    ③ 启动 Ambari Server
    
        # ambari-server start
        Using python /usr/bin/python
        Starting ambari-server
        Ambari Server running with administrator privileges.
        Organizing resource files at /var/lib/ambari-server/resources...
        Ambari database consistency check started...
        Server PID at: /var/run/ambari-server/ambari-server.pid
        Server out at: /var/log/ambari-server/ambari-server.out
        Server log at: /var/log/ambari-server/ambari-server.log
        Waiting for server start........................
        Server started listening on 8080
        DB configs consistency check: no errors and warnings were found.
        Ambari Server 'start' completed successfully.


db-purge-history 命令会分析 Ambari Server 数据库的如下表格,然后移除那些由命令行的 --from-date 参数指定的可以被删除的记录

    • AlertCurrent
    • AlertNotice
    • ExecutionCommand
    • HostRoleCommand
    • Request
    • RequestOperationLevel
    • RequestResourceFilter
    • RoleSuccessCriteria
    • Stage
    • TopologyHostRequest
    • TopologyHostTask
    • TopologyLogicalTask




17 自定义 Ambari 日志和 PID 目录 (Customizing Ambari Log + PID Directories)
-----------------------------------------------------------------------------------------------------------------------------------------
Ambari Server 和 Agents 将其活动写出到 .log 文件,并用一个 .pid 文件来包含它们所运行的进程的标识符号码。log 文件和 .pid 文件可以分别在它们
自己的主机上找到,默认位置为:

Ambari Server:
        /var/log/ambari-server/ambari-server.log
        /var/run/ambari-server/ambari-server.pid

Ambari Agent:
        /var/log/ambari-agent/ambari-agent.log
        /var/run/ambari-agent/ambari-agent.pid


必须为ambari-server.log 配置日志级别(logging level), 通过修改 Ambari Server 主机上的 /etc/ambariserver/conf/log4j.properties 文件。对于Ambari
Agent, 可以在每部运行 Ambari Agent 主机上 /etc/ambari-agent/conf/ambari-agent.ini 文件设置。通常也应考虑设置日志轮转策略(log-rotate policies)

参考操作系统文档来设置日志轮转。



17.1 自定义 Ambari Server 日志和 PID 目录 (Customizing Ambari Server Log + PID Directories)
-----------------------------------------------------------------------------------------------------------------------------------------
修改 Ambari Server Log 和 PID 位置

    ① 在 Ambari Server 主机上,停止 Ambari Server
    
        ambari-server stop
        
    ② 修改 PID 位置,编辑 Ambari Server 属性文件
    
        vi /etc/ambari-server/conf/ambari.properties
        
    ③ 修改 pid.dir 属性并保存文件
        
        pid.dir=/var/run/ambari-server
        
    ④ 修改 Log 位置,编辑 Ambari Server log4j 文件
    
        vi /etc/ambari-server/conf/log4j.properties
        
    ⑤ 修改 ambari.log.dir 属性并保存文件
    
        ambari.log.dir=${ambari.root.dir}/var/log/ambari-server
        
    ⑥ 创建新目录并确保设置目录的所有者和权限允许 Ambari Server 进程访问
    
    ⑦ 重启 Ambari Server
    
        ambari-server start


17.2 自定义 Ambari Agent 日志和 PID 目录 (Customizing Ambari Agent Log + PID Directories)
-----------------------------------------------------------------------------------------------------------------------------------------

    ① 在每个运行 Ambari Agent 的主机上,停止 Ambari Agent
        
        ambari-agent stop
        
    ② 编辑 Ambari Agent 属性文件
    
        vi /etc/ambari-agent/conf/ambari-agent.ini
        
    ③ 在 [agent] 节,修改 piddir 和 logdir 属性
    
        [agent]
        logdir=/var/log/ambari-agent
        piddir=/var/run/ambari-agent

    ④ 保存文件
    
    ⑤ 创建新目录并确保设置目录的所有者和权限允许 Ambari Agent 进程访问
    
    ⑥ 重新启动 Ambari Agent
    
        ambari-agent start
    

18 为 HDFS 和 YARN 配置包含文件管理 (Configuring Include File Management for HDFS and YARN)
-----------------------------------------------------------------------------------------------------------------------------------------
HDFS 和 YARN 都有控制集群中哪些主机可以包含进来,哪些主机要排除在外的能力。HDFS 使用 dfs.hosts 和 dfs.hosts.exclude 属性来控制哪些 datanode
允许连接到 NameNode. YARN 使用用户定义的文件,通过配置 yarn.resourcemanager.nodes.include-path 和 yarn.resourcemanager.nodes.exclude-path
属性控制哪些运行 NodeManager 组件的节点允许与 ResourceManager 通信。当修改这些文件的内容时,HDFS NameNode 和 YARN ResourceManager 都需要
通过调用 -refreshNodes 命令通知到这些变化, HDFS 使用 dfsadmin 工具,YARN 使用 rmadmin 工具。

可以配置 Ambari 来为 YARN 和 HDFS 管理这些包含文件。这些特性只可以为 HDFS 或 YARN 启用,或者两个服务都启用。如果启用了这一特性,Ambari 会
管理相关的包含/排除文件,并基于 Ambari 中主机的状态更新它们的内容。当这些文件发生变化时,Ambari 也会调用必要的 refreshNodes 命令来更新
NameNode 和/或 ResourceManager 的状态。

下面表格描述了发生如下操作时 Ambari 会进行的动作:

    • Add Component: Adding a NodeManager, or DataNode
    • Delete Component: Removing a NodeManager, or DataNode
    • Decommission Component: Decommissioning a NodeManager, or DataNode
    • Recommission Component: Recommissioning a NodeManager, or DataNode


    +-------------------+-----------------------+-----------------------+-----------------------+-------------------+
    | Operation            | Include File Actions    | Exclude File Actions    | Refresh Nodes Call    |Triggers Master    |
    |                    |                        |                        |                        |Restart Indicator    |
    +-------------------+-----------------------+-----------------------+-----------------------+-------------------+
    | Add Component        | Add hostname            | Remove hostname        | Yes                    | No                |
    +-------------------+-----------------------+-----------------------+-----------------------+-------------------+
    | Delete Component    | Remove hostname        | Remove hostname        | No                    | No                |
    +-------------------+-----------------------+-----------------------+-----------------------+-------------------+
    | Decommission        | Remove hostname        | Add hostname            | Yes                    | No                |
    | Component            | (YARN only)            |                        |                        |                    |
    +-------------------+-----------------------+-----------------------+-----------------------+-------------------+
    | Recommission        | Add hostname (YARN    | Remove hostname        | Yes                    | No                |
    | Component            | only)                    |                        |                        |                    |
    +-------------------+-----------------------+-----------------------+-----------------------+-------------------+




18.1 为 HDFS 启用包含文件管理 (Enable Include File Management for HDFS)
-----------------------------------------------------------------------------------------------------------------------------------------
    ① Ambari 中,添加 manage.include.files=true 属性到 Advanced hdfs-site 配置区。
    
    ② 确保 Custom hdfs-site 中配置了 dfs.hosts 属性,并且配置为 HDFS NameNode 主机文件系统上一个有效的位置。确保该文件存在并且属于运行 NameNode
    的用户
    
    ③ Ambari 提示时重启服务。
    
配置示例:

    ● 在 Advanced hdfs-site, 设置 manage.include.files=true
    ● 在 Custom hdfs-site, 设置 dfs.hosts=/etc/hadoop/conf/dfs.include



18.2 为 Yarn 启用包含文件管理 (Enable Include File Management for Yarn)
-----------------------------------------------------------------------------------------------------------------------------------------
    ① Ambari 中, 添加 manage.include.files=true 属性到 Advanced yarnsite 配置区。
    
    ② 确保 yarn.resourcemanager.nodes.include-path 设置为 YARN Resource Manager 主机文件系统上一个有效的位置。如果
    yarn.resourcemanager.nodes.include-path 没有设置,把它添加到 Custom yarn-site 配置中
    
    ③ Ambari 提示时重启服务。

配置示例:
    ● 在 Advanced yarn-site, 设置 manage.include.files=true
    ● 在 Custom yarn-site, 设置 yarn.resourcemanager.nodes.include-path=/etc/hadoop/conf/yarn.include


18.3 为 HDFS 禁用包含文件管理 (Disable Include File Management for HDFS)
-----------------------------------------------------------------------------------------------------------------------------------------
    ① Ambari 中,Custom hdfs-site 区,设置 manage.include.files=false 属性。
    
    ② 在同一配置区域,如果配置了 dfs.hosts 属性并且不再要 HDFS 使用包含文件来进行主机管理,移除 dfs.hosts 属性。
    
    ③ Ambari 提示时重启服务。



18.4 为 Yarn 禁用包含文件管理 (Disable Include File Management for Yarn)
-----------------------------------------------------------------------------------------------------------------------------------------
    ① Ambari 中,在 Custom yarn-site 配置区,设置 manage.include.files=false 属性。
    
    ② 在同一配置区域,如果配置了 yarn.resourcemanager.nodes.include-path 属性并且不再要 YARN 使用包含文件进行主机管理,删除这个属性。
    

    ③ Ambari 提示时重启服务。

 

(本篇完)

 

参考:    Ambari 系统管理 (Ambari Administration)  之一

ambari 2.7.6源码编译指南 编译环境与基本软件安装 centos 7.6 maven 3.6.3 由于编译相关jar包较难下载,所以本文提供仅用于ambari编译的maven repository,将该repository替换原.m2/repository目录即可。 repository.tar.gz 提取密码:ambari 软件安装 yum install -y wget git psutils python-devel rpm-build java-1.8.0-openjdk-devel 搭建http服务 yum insta 阅读详情

相关推荐

Ambari 2.7.5+HDP3.1.5离线扩容不同配置组

确保ambari server节点启动,Httpd 服务安装并启动,可参考:Ambari 2.7.5+HDP3.1.5离线安装详细教程(附安装包)

QYmufeng的博客 1333

Ambari部署安装

Ambari部署安装手册 1·环境配置 本安装基于RHEL 7.3。 1.1关闭防火墙服务(所有节点)和selinux 关闭防火墙: service iptables stop或systemctl stop firewalld 禁止开机启动: chkconfig iptables off 或 systemctl disable firewalld 查看防火墙状态: service...

杨得朝的博客 1948

编译Ambari 3.0.0全攻略

本文详细介绍了在CentOS 7.9环境下编译Ambari 3.0.0的完整步骤。主要内容包括:1)基础依赖安装指南;2)源代码克隆方法(提供国内加速链);3)JDK 17和Maven 3.8.4的版本要求及一键安装建议;4)高效全量编译命令参数说明(包含多线程优化和跳过选项);5)编译产出的目录结构及RPM包位置。文章特别针对国内网络环境提供了yarn离线包准备等优化建议,帮助开发者顺利完成Ambari的编译工作。

TTBIGDATA的博客 1665

galera mysql 机制_mysql galera cluster 集群的分裂与仲裁机制

集群的分裂当集群由于网络原因分裂为几个单独的组时(一组可能是单节点,也可能是几个互联的节点),数据出现不一致,此时可能产生脑裂及数据不一致。这种情况 下,只有一组节点能够继续提供服务,这组节点的状态是primary。当这种状况发生时,galera cluster会启动特别的仲裁算法来选举一个组件作为primary组件。cluster size决定了quorum仲裁的投票数(因此是单数比较好,避免产...

weixin_35537635的博客 392

ambari启用kerberos

我这里测试集群,自定义安装了flink,hue,ES,presto等,应在未安装之前启用kerberos,因为amabri是不支持这个自定义kerberos的,需要自己在自定义是配置,或者后期添加配置,我这里是直接先停停掉,在安装的,但是测试集群很多人再用,停止前要和大家商量好。公司的测试集群是amabri安装的,HDP3.1.4版本,前面已经安装好了kerberos主从,现在要在集群上开启kerberos认证。集成kerberos后,kafka访问方式:(必须使用主机名,如果是ip会报错)

jzy3711的博客 2848

ambari-blueprints

Ambari 蓝图 此存储库提供了一些示例,可帮助您开始使用 Ambari快速设置 Hadoop 集群。 #概述 蓝图可用于定义和安装 Hortonworks HDP 集群。 所需的步骤是(高级视图): 使用操作系统安装集群节点 在所有节点上安装(一个)Ambari 服务器和代理 在 JSON 中定义蓝图 定义主机映射以应用蓝图 使用 Ambaris REST API 设置和应用您的 JSON 配置 #蓝图示例 1.) 使用基本 HDFS/YARN 组件(包括监控)设置。 2.) 使用基本 HDFS/YARN 组件、Hive&Pig、Monitoring 和 Kafka brokers 设置一个。 成功安装 Hortonworks HDP 2.1(单节点)集群后的屏幕截图

基于ambari的yarn-site.xml的分析与介绍

key value 描述 hadoop.registry.rm.enabled true yarn资源管理器中是否启用了注册表 hadoop.registry.zk.quorum node1:2181,node2:2181,node3:2181 用于定义注册表的zookeeper仲裁绑定 manage.include.files false yarn.acl.enab...

Tu_maimes 1658

【保姆级教程】不到一元32位芯片 DIY迷你时钟

基于不到一元的CH32V003F4P9芯片制作的迷你多功能时钟。

twen51的博客 1817

Ambari 系统管理 (Ambari Administration) 之一

1. Ambari 系统管理概述 (Ambari Administration Overview) Apache Ambari 可使你能够提供,管理,和监控 Hadoop 集群。如果负责安装和维护 Ambari, 以及通过 Ambari 来管理 Hadoop 集群,应使用本指南。 安装 Ambari 创建默认的用户/密码 admin/admin. 这是 Ambari 级系统管理员用户(Am...

devalone 的专栏 4750

潜行游戏设计:核心机制与关卡设计解析

潜行游戏作为动作游戏的重要分支,通过视觉遮蔽、声音传播和AI行为树等复杂系统,为玩家提供独特的策略体验。视觉隐蔽系统采用视野锥和光照值的双重判定,声学传播模型模拟距离衰减和材质穿透,而敌人AI行为树则包含巡逻、警戒和团队协作等状态节点。这些技术不仅提升了游戏的真实感和挑战性,还在《合金装备》《刺客信条》等经典作品中得到广泛应用。潜行游戏的关卡设计强调多路径拓扑结构和环境叙事元素,通过沙漏模型和动态难度调节,平衡自由度和开发成本。未来,基于ML的适应性AI和物理模拟的隐蔽系统将成为创新方向。

weixin_42497762的博客 182

LangChain学习及应用(超详细)

Model I/O 部分是与语言模型进行交互的核心组件,包括输入提示(Prompt Template)、调用模型(Model)、输出解析(Output Parser)。简单来说,就是输入、处理、输出这三个步骤。LLM 因其具有海量参数,需要花费相当的物力与时间成本进行预训练和微调,同时商用 LLM 还需要进行各种安全测试与风险评估等。因此 LLM 会存在知识滞后的问题。在专有领域,LLM 无法学习到所有的专业知识细节,因此在面向专业领域知识的提问时,无法给出可靠准确的回答。

weixin_39764056的博客 4260

Ambari学习笔记-安装Kerberos

Ambari学习笔记-安装Kerberos

snipercai的博客 1868

GoDaddy域名解析 到 阿里云域名DNS

一:登录GODaddy,点击“个人中心”,然后点击“管理域名” 二:域名解析 第一种:直接解析到对应的服务器 添加一个,类型默认A,主机填写二级域名前缀(image.主域名),指向填写目标服务器ip即可(注意目标服务器80端口是否开放) 第二种:将主域名dns转到阿里云域名下 三:若要修给为阿里云解析服务器,要做以下修改,点击“更改” 点击更改后出现如下页面,此时需要到阿里云官网云解析DNS下添加域名解析 四:阿里云添加域名解析...

xiaolinzi176的博客 6706

Bigtop Manager vs Ambari:为什么这款现代管理工具更适合你的大数据集群?[特殊字符]

前往项目官网免费下载:[https://ar.openeuler.org/ar/](https://ar.openeuler.org/ar/?utm_source=csdn_blog) 在当今大数据时代,集群管理工具的选择直接影响着企业的运维效率和成本控制。Apache Ambari作为传统的大数据集群管理工具,虽然曾经占据主导地位,但新一代的**Bigtop Manager**凭借其现代化的架

gitblog_06817的博客 85

手把手教你解决uniapp中esbuild版本冲突问题(Mac版专属指南)

本文是针对Mac平台uniapp开发者的专属指南,详细解析了运行项目时常见的`Cannot start service`错误,即esbuild的Host版本与binary版本不匹配问题。文章从错误根源入手,提供了从快速应急处理到彻底根治的完整解决方案,包括手动替换二进制文件、锁定依赖版本、清理缓存及优化工具链配置,旨在帮助开发者高效解决版本冲突,恢复并稳定开发环境。

i0j1k2l3m的博客 459

Spring Boot与Apache Ignite集成:构建高性能分布式缓存和计算平台

Apache Ignite是一个高性能的分布式内存计算平台,支持内存缓存、分布式计算、流处理和机器学习等功能。它提供了低延迟的数据访问和强大的计算能力,适用于需要高性能和可扩展性的应用。将Apache Ignite集成到Spring Boot应用中,可以显著提高应用的性能和可扩展性。Spring Boot的简单配置和Ignite的强大功能相结合,使得开发和部署更加高效。首先,创建一个新的Spring Boot项目。可以通过Spring Initializr(https://start.spring.io/)

九天的专栏 2148

Ambari数据库分析-blueprint

blueprint 蓝图,主要包括配置,主机分配等信息;蓝图包含于stack。

Show something 1129

【异常】OpenClaw 连接异常This site can‘t be reached 127.0.0.1 refused to connect Try: Checking the proxy

在访问OpenClaw相关服务时,浏览器提示如下异常信息,无法正常加载页面:Try:补充说明:该报错仅出现于本地访问场景(127.0.0.1为本地回环地址),涉及OpenClaw核心服务的本地连接交互,无外部网络及敏感信息泄露风险。

奶爸的编程之路,也就一周冷个三天 1486

Ambari Extensibility Features

ambari提供了不用硬编码来扩展ambari的3种途径: (1)Stacks:自定义服务,主要通过添加resources实现; (2)Blueprints:自动化集群的构建,主要通过HTTP calls(调用ambari提供的REST APIS); (3)Views:扩展 & 自定义Ambari Web UI;

在路上的学习者 953

Open3D 可视化(1)——简单可视化【2026最新版】

简单可视化,博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 5687

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【Ambari】开启Kerberos安全认证

一个 User 或者一个 Service 会用 Principal 到 认证服务器(AS)认证,AS会返回一个用 Principal Key 加密的 TGT(票据授权票据),这时候只有 AS 和 Principal 的使用者可以识别该TGT,User 或者 Service 会使用 Principal 的 Key 来解密 TGT, 并使用解密后的 TGT 去TGS 获取 Service Ticket。在 Kerberos 认证的集群中,只有拿着这个 Service Ticket 才可以访问真正的 Se

康师傅没有眼泪 4226

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

03.Ambari自定义服务开发-组件安装启动停止卸载介绍

在WebUI中重启服务时,会自动触发执行restart()方法,当文件内没有 restart() 方法的时候,程序会在重启的时候自动执行 stop() 和 start() 方法,以实现重启命令。在WebUI停止服务的是时候,在执行完stop()方法后会执行status(),如果status()能够成功执行,则一直处于停止状态中;configure() 方法没有被 Ambari 默认触发,这个方法一般被 install()、start()、restart() 方法主动调用执行。

jast 1201

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Ambari WebUI-集群管理操作使用说明

【总览】【集群操作】【配置文件下载】【图表操作】【图表时间配置】【集群总体监控图表】Memory Usage:整个集群的内存使用情况,包括 cached,swapped,used,和shared。Network usage:整个就群的网络流量,包括上行和下行;CPU Usage:集群的CPU使用情况;Cluster Load:集群整体加载信息,包括节点数目,总CPU个数,正在运行的进程【HDFS层面】左图:整个集群的磁盘使用情况。右图:DFS的使用情况;non DFS的使用情况;

杜海的博客 1982

Ambari2.6安装部署Hadoop2.7

Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeper、Sqoop和Hcatalog...

weixin_33887443的博客 483

ambari部分rest api

关于blueprint: # ambari_server_ip # cluster_name # 从当前集群导出当前集群的Blueprint curl -H "X-Requested-By: ambari" -X GET -u admin:admin http://ambari_server_ip:8080/api/v1/clusters/cluster_name?format=bluepri

771

【史上最全】Ambari 大数据集群运维与管理操作指南

作 用 Hadoop 是用在商业主机网络集群上的大规模、分布式的数据存储和处理基础架构。监控和管理如此复杂的分布式系统是不简单的。为了管理这种复杂性, Apache Ambari 从集群节点和服务收集了大量的信息,并把它们表现为容易使用的,集中化的接口:Ambari Web 功 能 显示诸如服务特定的摘要、图表以及警报信息 创建和管理 HDP 集群并执行基本的操作任务,例如启动和停止服务,向集群 中添加主机,以及更新服务配置 执行集群管理任务,例如启用 Kerberos 安全以及执行 St

大数据研习社 7326
上一篇: Ambari 系统管理 (Ambari Administration) 之一
下一篇: Ambari 操作指南 (Ambari Operations) 之一
devalone
博客等级 码龄17年 108粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值