

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Apache Iceberg 워크로드 모니터링
<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 카탈로그에만 사용할 수 있습니다.

를 사용하는 경우 Iceberg가 노출하는 메타데이터 테이블 위에 모니터링을 설정하여 Iceberg 테이블의 상태에 대한 인사이트를 얻을 AWS Glue Data Catalog수 있습니다.

모니터링은 성능 관리 및 문제 해결에 매우 중요합니다. 예를 들어 Iceberg 테이블의 파티션이 특정 비율의 작은 파일에 도달하면 워크로드가 압축 작업을 시작하여 파일을 더 큰 파일로 통합할 수 있습니다. 이렇게 하면 쿼리가 허용 수준 이상으로 느려지는 것을 방지할 수 있습니다.

## 테이블 수준 모니터링
<a name="table-level-monitoring"></a>

다음 화면은 Amazon Quick Sight에서 생성된 테이블 모니터링 대시보드를 보여줍니다. 이 대시보드는 Spark SQL을 사용하여 Iceberg 메타데이터 테이블을 쿼리하고 활성 파일 수 및 총 스토리지와 같은 세부 지표를 캡처합니다. 그런 다음이 정보는 운영 목적으로 AWS Glue 테이블에 저장됩니다. 마지막으로 다음 그림과 같이 Amazon Athena를 사용하여 Quick Sight 대시보드를 생성합니다. 이 정보는 시스템의 특정 문제를 식별하고 해결하는 데 도움이 됩니다.

![\[Iceberg 테이블 모니터링을 위한 Quick Sight 대시보드\]](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/apache-iceberg-on-aws/images/quicksight-table.png)


Quick Sight 대시보드 예제는 Iceberg 테이블에 대해 다음과 같은 핵심 성과 지표(KPIs)를 수집합니다.


| **KPI** | **설명** | **Query** | 
| --- |--- |--- |
| **파일 수** | Iceberg 테이블의 파일 수(모든 스냅샷용) | <pre>select count(*) <br />from <catalog.database.table_name>.all_files</pre> | 
| **활성 파일 수** | Iceberg 테이블의 마지막 스냅샷에 있는 활성 파일 수 | <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> | 
| **작은 파일의 백분율** | 100MB보다 작은 활성 파일의 백분율 | <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>

다음 예제는 Iceberg 테이블 컬렉션의 데이터베이스 수준 KPIs에 대한 개요를 제공하기 위해 Quick Sight에서 생성된 모니터링 대시보드를 보여줍니다.

![\[Iceberg의 데이터베이스 수준 모니터링을 위한 QuickSight 대시보드\]](http://docs.aws.amazon.com/ko_kr/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/ko_kr/prescriptive-guidance/latest/apache-iceberg-on-aws/monitoring.html)

## 예방적 유지 관리
<a name="preventive-maintenance"></a>

이전 섹션에서 설명한 모니터링 기능을 설정하면 사후 대응 각도 대신 예방 각도에서 테이블 유지 관리에 접근할 수 있습니다. 예를 들어 테이블 수준 및 데이터베이스 수준 지표를 사용하여 다음과 같은 작업을 예약할 수 있습니다.
+ 테이블이 N개의 작은 파일에 도달하면 빈 패킹 압축을 사용하여 작은 파일을 그룹화합니다.
+ 테이블이 지정된 파티션의 N 삭제 파일에 도달하면 빈 패킹 압축을 사용하여 삭제 파일을 병합합니다.
+ 총 스토리지가 활성 스토리지보다 X배 높을 때 스냅샷을 제거하여 이미 압축된 작은 파일을 제거합니다.