

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 监控 Apache 冰山工作负载
<a name="monitoring"></a>

要监控 Iceberg 工作负载，您有两种选择：分析[元数据表](https://iceberg.apache.org/docs/latest/spark-queries/#inspecting-tables)或使用[指标报告器。](https://iceberg.apache.org/javadoc/latest/index.html?org/apache/iceberg/metrics/MetricsReporter.html)指标报告器在 Iceberg 版本 1.2 中引入，仅适用于 REST 和 JDBC 目录。

如果您正在使用 AWS Glue Data Catalog，则可以通过在 Iceberg 公开的元数据表上设置监控来深入了解 Iceberg 表的运行状况。

监控对于性能管理和故障排除至关重要。例如，当 Iceberg 表中的分区达到一定比例的小文件时，您的工作负载可以启动压缩作业，将这些文件整合为更大的文件。这样可以防止查询速度超过可接受的水平。

## 表级监控
<a name="table-level-monitoring"></a>

以下屏幕显示了在 Amazon Quick Sight 中创建的表格监控控制面板。此仪表板使用 Spark SQL 查询 Iceberg 元数据表，并捕获活动文件数量和总存储空间等详细指标。然后，这些信息存储在 AWS Glue 表中以供操作。最后，使用 Amazon Athena 创建了 Quick Sight 控制面板，如下图所示。这些信息可帮助您识别和解决系统中的特定问题。

![\[用于监控冰山桌的 Quick Sight 仪表板\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/apache-iceberg-on-aws/images/quicksight-table.png)


示例 Quick Sight 仪表板收集了 Iceberg 表的以下关键性能指标 (KPIs)：


| **关键绩效指标** | **描述** | **Query** | 
| --- |--- |--- |
| **文件数量** | Iceberg 表中的文件数（适用于所有快照） | <pre>select count(*) <br />from <catalog.database.table_name>.all_files</pre> | 
| **活动文件数** | 冰山表最后一次快照中的活动文件数 | <pre>select count(*) <br />from <catalog.database.table_name>.files</pre> | 
| **平均文件大小** | Iceberg 表中所有文件的平均文件大小（以兆字节为单位） | <pre>select avg(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.all_files</pre> | 
| **平均活动文件大小** | Iceberg 表中活动文件的平均文件大小（以兆字节为单位） | <pre>select avg(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.files</pre> | 
| **小文件的百分比** | 小于 100 MB 的活动文件所占的百分比 | <pre>select cast(sum(case when file_size_in_bytes < 100000000 then 1 else 0 end)*100/count(*) as decimal(10,2)) <br />from <catalog.database.table_name>.files</pre> | 
| **存储空间总大小** | 表中所有文件的总大小，不包括孤立文件和 Amazon S3 对象版本（如果启用） | <pre>select sum(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.all_files</pre> | 
| **活动存储空间总大小** | 给定表的当前快照中所有文件的总大小 | <pre>select sum(file_size_in_bytes)/1000000 <br />from <catalog.database.table_name>.files</pre> | 

有关创建仪表板的更多信息，请参阅 [Quick Sight 文档](https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-bi.html)。

## 数据库级监控
<a name="database-level-monitoring"></a>

以下示例显示了在 Quick Sight 中创建的监控仪表板， KPIs 用于概述一组 Iceberg 表的数据库级别。

![\[QuickSight 用于对 Iceberg 进行数据库级监控的仪表板\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/apache-iceberg-on-aws/images/quicksight-database.png)


此控制面板收集以下内容 KPIs：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/apache-iceberg-on-aws/monitoring.html)

## 预防性维护
<a name="preventive-maintenance"></a>

通过设置前几节中讨论的监控功能，您可以从预防性角度而不是被动角度进行表维护。例如，您可以使用表级和数据库级别的指标来计划诸如以下的操作：
+ 当表格达到 N 个小文件时，使用垃圾箱压缩对小文件进行分组。
+ 当表达到 N 个给定分区中的删除文件时，使用 bin 打包压缩合并删除文件。
+ 当总存储空间比活动存储量高 X 倍时，通过移除快照来移除已经压缩的小文件。