
# Hive支持将SQL执行的Metrics信息存储到Hive表中
使用Hive执行SQL任务时，Hive会在SQL执行过程中记录Metrics信息，并写入HiveServer节点的"queryinfo.log"日志文件中，包括引擎类型、queryId、SQL语句执行耗时、处理的数据量、Task任务等信息。为了方便查询和更好地利用这些信息，将记录的"queryinfo.log"日志转存到Hive表中，以便用户可以使用Hive SQL来分析处理相关数据。
默认情况下，该功能是关闭的，即HiveServer节点本地的"queryinfo.log"日志不会转存到Hive表中。可通过将HiveServer的"hive.sql.query.metrics.archive.enable"参数值修改为"true"，以开启将Metrics信息存储到Hive表的功能。
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
- 存储"queryinfo.log"日志的数据库和表在MetaStore启动时会被创建，开启Metrics信息存储到Hive表的功能后，系统会根据归档间隔时间自动将本地的"queryinfo.log"日志写入到Hive表中，无需执行创建存储Metrics信息的数据库、表和插入数据操作。
- 查看Metrics表数据的用户需要具备该表的查询权限（授予用户权限时，仅授予该表查询权限即可，以防止误删Metrics表数据）。
- 配置了HiveMetaStore物理降压功能的集群不支持该功能。
- 对接LakeFormation集群不支持该功能。
- 该章节仅适用于MRS 3.6.0-LTS及之后版本。
 
#### 操作步骤
1. 登录FusionInsight Manager，选择"集群 \> 服务"，在服务列表中单击"Hive"进入概览页面，选择" 配置 \> 全部配置"。
2. 在全部配置界面右上角的搜索框中搜索"hive.sql.query.metrics.archive.enable"，并修改该参数值为"true"，开启将SQL Metrics信息存储到Hive表功能。
3. （可选）在搜索框中搜索"metrics"，根据实际需求配置[表1]中相关的Metrics日志存储参数。
   
    表1Metrics日志存储参数 
   | 参数                                                 | 参数描述                                                                                                                                                                                                                                                                                                                     | 默认取值             |
   |:---|:---|:---|
   | hive.sql.query.metrics.archive.interval            | Metrics日志归档的间隔时间，单位为小时，取值范围为1\~24。                                                                                                                                                                                                                                                                                       | 1                |
   | metastore.metrics.archive.add.partition.time       | 设置Metrics表分区的创建时间，MetaStore会根据该时间在前一天创建分区，格式为"hh:mm:ss"。                                                                                                                                                                                                                                                                 | 23:00:00         |
   | metastore.metrics.archive.db.table.location.schema | 用于指定存储SQL Metrics日志数据库和表Location中的schema，根据该schema决定Metrics日志存在HDFS或OBS上。 说明： 如果Metrics日志需要存储在OBS上，需参考[配置MRS集群存算分离](https://support.huaweicloud.com/usermanual-mrs/mrs_01_248987.html)完成存算分离配置。 | hdfs://hacluster |
   | metastore.metrics.archive.retention.time           | 归档到Hive表中的Metrics日志的保留时间，超出保留时间的日志会自动被清除。单位为天，取值范围为7\~90。                                                                                                                                                                                                                                                                | 30               |
      
   
   
4. 单击"保存"，在弹出窗口单击"确定"保存配置。
5. 单击"实例"，勾选所有HiveServer实例，选择"更多 \> 重启实例"，输入当前用户密码并单击"确定"重启HiveServer实例。
6. 默认普通用户（不包含**supergroup** 组的用户）没有权限查看"mrs_system_sql_metrics"表，需参考[Hive用户权限管理](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_0947.html)或[添加Hive的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_1858.html)（Hive已启用Ranger鉴权）章节为对应用户仅授权于该表的查询权限。
7. Metrics日志归档后，可以在Hive客户端使用Hive SQL查询分析"mrs_system_sql_metrics"表的数据，例如： 
   **cd** *客户端安装目录*
   **source bigdata_env**
   **kinit** *业务用户名*（集群未启用Kerberos认证（普通模式）请跳过该操作）
   **beeline**
   **use mrs_system;**
   **select \* from mrs_system_sql_metrics where record_date='** *20250101* **' and component_name='hive' limit** *10* **;**
   
   
 
#### Metrics数据库和表介绍
Metrics数据库名为"mrs_system"，Metrics表名为"mrs_system_sql_metrics"。
"mrs_system_sql_metrics"表包含两级分区，一级分区名为"record_date"，用于区分Metrics日志生成的时间，分区值的格式为"yyMMdd"，例如"20250101"；二级分区名为"component_name"，用于区分Metrics日志所属的组件，分区值为"hive"、"spark"、"hetu"。表字段信息如[表2]所示。
 表2Metrics表字段信息 
| 字段名称            | 字段类型   | 字段描述                                                                                                                                                               |
|:---|:---|:---|
| engine          | string | 引擎类型。                                                                                                                                                              |
| tenant          | string | 租户名称。                                                                                                                                                              |
| instance_id     | string | 集群ID。                                                                                                                                                              |
| query_id        | string | Query ID。                                                                                                                                                          |
| execute_sql     | string | SQL语句。                                                                                                                                                             |
| status          | string | Query状态。                                                                                                                                                           |
| execute_time    | double | 执行耗时，单位为秒。                                                                                                                                                         |
| queued_time     | double | 排队时长，单位为秒。                                                                                                                                                         |
| start_time      | string | 开始时间。                                                                                                                                                              |
| end_time        | string | 结束时间。                                                                                                                                                              |
| user_name       | string | 用户名称。                                                                                                                                                              |
| user_ip         | string | 客户端IP地址。                                                                                                                                                           |
| input_row       | bigint | 总扫描数据行数（读）。                                                                                                                                                        |
| input_data      | double | 总扫描数据大小（读），单位为MB。                                                                                                                                                  |
| written_row     | bigint | 写入数据行数。                                                                                                                                                            |
| written_data    | double | 写入数据大小，单位为MB。                                                                                                                                                      |
| result_row      | bigint | 查询结果行数。                                                                                                                                                            |
| result_data     | double | 查询结果大小，单位为MB。                                                                                                                                                      |
| assigned_memory | double | Query分配内存，单位为MB。                                                                                                                                                   |
| total_memory    | double | 任务执行时使用的内存大小，值为任务运行使用的内存（单位为MB） \* 任务运行的时间（单位为秒）。                                                                                                                  |
| cpu_time        | double | 任务运行时使用CPU的时间，值为任务运行使用的CPU（单位为vcore） \* 任务运行的时间（单位为秒）。                                                                                                             |
| scan_partition  | bigint | 扫描分区数。                                                                                                                                                             |
| scan_file       | bigint | 扫描文件数。                                                                                                                                                             |
| splits          | bigint | split数。                                                                                                                                                            |
| tasks           | string | Task信息，值为JSON格式，包括引擎类型、总Task数、stage划分、各stage中的Task数和并行度。                                                                                                           |
| sql_defense     | string | 大SQL防御信息。                                                                                                                                                          |
| source_table    | string | 源表。                                                                                                                                                                |
| sink_table      | string | 目标表。                                                                                                                                                               |
| audit_addition  | string | JDBC连接标识属性。                                                                                                                                                        |
| task_id         | string | JobGateway提交的任务所在的任务组ID。                                                                                                                                           |
| taskExeId       | string | JobGateway执行的作业ID。                                                                                                                                                 |
| extended_info   | string | 该字段作为扩展字段，便于后续新增信息，值为JSON格式，具体JSON字段可通过在Hive客户端执行以下命令查看： **show create table mrs_system_sql_metrics;** |
   
