Ambari 系统管理 (Ambari Administration) 之二

(继 Ambari 系统管理 (Ambari Administration)  之一: https://blog.csdn.net/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)  之一

猜你喜欢

转载自blog.csdn.net/devalone/article/details/80769827