Paimon プライマリキー表におけるコンパクションのバックログは、可視化される前にクエリパフォーマンスを静かに劣化させる可能性があります。Data Lake Formation (DLF) は Cloud Monitor と統合されており、3 つのコンパクション遅延メトリックを可視化することで、アラートルールの設定およびバックログの早期検出を支援します。
コンパクションモニタリングの仕組み
DLF では、スケジューリングレイヤーでコンパクションが自動的に実行されます。データがコミットされた後、そのデータは未コンパクションのスナップショットとしてキューに残り、スケジューラによって処理されるのを待ちます。以下に説明する 3 つのメトリックは、この遅延を異なる観点から測定します — スケジューリングキューの深さ、物理ファイルの経過時間、および最新のコンパクションと最新の書き込みとのギャップです。ワークロードに最も適したメトリックを選択するか、広範なカバー率を得るために複数のメトリックを組み合わせて使用してください。
これらのメトリックは、ストレージ最適化が有効化された Paimon プライマリキー表(write-only=true)にのみ適用されます。このオプションは、DLF のフルマネージドサービスではデフォルトで有効になっています。コンパクション待ちのデータがない場合、すべてのメトリックは 0 を返します。コンパクション遅延メトリック
すべてのメトリックは Cloud Monitor 経由で報告され、カタログ、データベース、またはテーブルというディメンション単位でスコープを指定できます。
| メトリック | 測定対象 | 推奨ユースケース |
|---|---|---|
compaction_latency_between_latest_compacted_and_uncompacted_commit | 最新のコンパクション済みコミットと最新の非コンパクションコミットとの時間差 | コンパクションが継続的な書き込みに対して追いついているかどうかを評価する場合 |
compaction_latency_earliest_uncompacted_commit | コミット済みだが未コンパクションの最も古いスナップショットがキューに滞留している期間 | スケジューリングレイヤーの応答性およびリソース不足の診断を行う場合 |
compaction_latency_earliest_uncompacted_file | 最も古い未コンパクションデータファイルの物理的経過時間(作成時刻から現在時刻まで) | データの新鮮さ(freshness)に対する厳格な要件があるワークロード |
compaction_latency_between_latest_compacted_and_uncompacted_commit
定義: 最新のコンパクション済みコミットと最新の非コンパクションコミットとの時間差です。
測定対象: キャッチアップギャップ — 最新のコンパクション実行が最新の書き込みに対してどの程度遅れているかを示します。値が増加している場合は、コンパクションタスクが書き込みスループットに追いついていないことを意味します。
使用タイミング: テーブルレベルで、コンパクションが継続的な書き込みに対して追いついているかどうかを評価したい場合。
このメトリックは、特定のデータがどの程度待機しているかを測定しません。あくまで、直近の 2 つのイベント間のギャップのみを反映します。
compaction_latency_earliest_uncompacted_commit
定義: 最も古い未マージスナップショットのコミット時刻と現在のシステム時刻から算出される遅延です。
測定対象: スケジューリングレイヤーの遅延 — コミット済みデータの最も古いバッチがコンパクションのためにキューに滞留している期間です。これは、スケジューリングシステムの応答性および十分なリソースの有無を判断する主要な指標です。
使用タイミング:
スケジューリングシステムの応答速度をモニタリングする場合
コンパクションリソースの不足をトラブルシューティングする場合
高頻度コミットのシナリオでは、コミット前のデータ書き込みに要した時間を考慮しないため、このメトリックの値が予想より低くなることがあります。
compaction_latency_earliest_uncompacted_file
定義: 最も古い未コンパクションデータファイルの作成タイムスタンプから現在のシステム時刻までの経過時間です。
測定対象: エンドツーエンドのデータの適時性 — データが物理的にディスクに書き込まれてから、まだコンパクション待ちである時点までの期間です。これは、上流の書き込み時間およびチェックポイント間隔を含むため、compaction_latency_earliest_uncompacted_commit よりも一般的に大きな値となり、最も古いデータの物理的経過時間をより正確に反映します。
使用タイミング:
データの新鮮さ(freshness)を厳密にモニタリングする必要があるワークロード
チェックポイント間隔が長い、長期間ウィンドウのストリーム書き込みまたは大規模バッチインポートのシナリオ
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
少なくとも 1 つの Paimon プライマリキー表を含む DLF カタログ
監視対象のテーブルでストレージ最適化が有効化されていること(
write-only=true)Cloud Monitor コンソールへのアクセス権限
ヒント: アラートルールを構成する前に、GetTableCompactionInfo API を使用して、対象テーブルでコンパクションがアクティブであることを確認してください。これにより、アラートが発火しない場合に、構成の問題とデータの可用性の問題を区別できます。
アラートルールの作成
各アラートルールには、3 つの構成要素があります:条件(対象メトリックおよびしきい値)、スコープ(監視対象のディメンション)、およびトリガー頻度(アラートが発火するまでの連続サイクル数)。コンソールへの入力前に、これらを事前に決定してください。
Cloud Monitor コンソールにログインします。
左側ナビゲーションウィンドウで、[アラート] > [アラートルール] を選択します。
[アラートルールの作成] をクリックし、以下のパラメーターを設定します。
パラメーター 説明 製品 Data Lake Formation (DLF) リソース範囲 [インスタンス] を選択します。 アラートルールはカタログに適用されます。 関連リソース [インスタンスの追加] をクリックします。 左上でターゲットリージョンを選択し、モニターするカタログを選択してから、[OK] をクリックします。 ルールの説明 [ルールの追加] > [シンプルなメトリック] または [複合メトリック] をクリックして、[ルールの説明を設定] パネルを開きます。
Cloud Monitor メトリックの説明
コンパクション遅延_最新コンパクション済みコミットから最新非コンパクションコミットまで
定義: 最新のコンパクション済みコミット と 最新の非コンパクションコミット の間の時間差です。
意味: 現在のシステムにおける未マージデータの 時間幅 を反映します。
利用シーン:
データキャッチアップの進捗状況を評価する場合
値が大きくなるほど、最新のコンパクションタスクが書き込み進捗に対してさらに遅れていることを示します。
備考: このメトリックは、コンパクションタスクが 最新の書き込み進捗(キャッチアップギャップ)に対してどの程度遅れているかを測定します。特定のデータがどの程度待機しているかは測定しません。
コンパクション遅延_最も古い非コンパクションコミット
定義: 最も古い未マージスナップショットのコミット時刻 と 現在のシステム時刻 から算出される遅延です。
意味: コンパクションタスクの スケジューリングレイヤーにおける遅延 を反映します。これは、コミット済みデータの最も古いバッチがマージを待っている 時間 です。
利用シーン:
スケジューリングシステムの応答速度を監視します。
コンパクションリソースの不足をトラブルシューティングする場合
備考: 高頻度コミット のシナリオでは、データ書き込みプロセスに要した時間を無視するため、このメトリックの値が予想より小さくなることがあります。
コンパクション遅延_最も古い非コンパクションファイル
定義: 現在のシステム時刻と 最も古い未マージスナップショットのコミット時刻 の差です。
意味: データの エンドツーエンドの適時性 を反映します — データが 物理的にディスクに書き込まれてから マージを待つまでの期間です。
利用シーン:
データの新鮮さ(freshness)を厳密にモニタリングする必要があるシナリオ
チェックポイント間隔が大きい、長期間ウィンドウのストリーム書き込みまたは大規模バッチインポートのシナリオ
備考: このメトリックには、上流のデータ書き込みおよびそのチェックポイントに要した時間が含まれるため、通常は「最も古い非コンパクションコミット」遅延よりも大きな値となり、最も古いデータの物理的経過時間をより正確に反映します。
詳細については、「テーブルマージ情報」をご参照ください。
システム内にコンパクション待ちのデータがない場合、すべてのコンパクション遅延メトリックの値は 0 です。
これらのメトリックは、Paimon プライマリキー表にのみ適用されます。ストレージ最適化機能は、
write-only=trueを設定することで有効化されます。DLF のフルマネージドサービスでは、このオプションがデフォルトで有効になっています。
シナリオ別のアラート構成
以下の構成を起点としてご利用ください。SLA および通常のコンパクションペースに応じて、しきい値を調整してください。
頻繁に更新されるプライマリキー表のモニタリング
書き込みスループットが高いテーブルの場合、いずれかの遅延メトリックがしきい値を超えた時点でアラートを発火させるために、[複数メトリック] を使用します。これにより、バックログがスケジューリングレイヤーまたは物理ファイルの経過時間のいずれから生じているかに関わらず、確実に検出できます。
| 構成 | 値 |
|---|---|
| メトリックタイプ | 複数メトリック(いずれかの条件が成立した場合にアラートを発火) |
| メトリック | compaction_latency_earliest_uncompacted_commit および compaction_latency_earliest_uncompacted_file |
| 条件 | 値が指定された秒数を超える場合にアラートを発火 |
| ディメンションの選択 | テーブル |
カタログまたはデータベースレベルでのモニタリング
複数のテーブルにまたがる広範なビューを得るには、スケジューリングレイヤーの指標に対して [シンプルメトリック] を使用します。
| 構成 | 値 |
|---|---|
| メトリックタイプ | シンプルメトリック |
| メトリック | compaction_latency_earliest_uncompacted_commit |
| 条件 | 1 回以上トリガーされた場合にアラートを発火 |
| ディメンションの選択 | データベースまたはカタログ(カタログ全体を対象とする場合は空白のまま) |
アラートルールのサンプル
以下の例は、コミットベースおよびファイルベースの両方の遅延について 10 分間のしきい値を設定し、頻繁に更新されるテーブルをモニタリングするための完全な構成を示しています。
| パラメーター | 例 |
|---|---|
| アラートルール | コンパクション遅延アラート |
| メトリックタイプ | 統合メトリック |
| アラートレベル | 警告 (Warn) |
| 複数メトリックアラート条件 | compaction_latency_earliest_uncompacted_commit:メトリック値 ≥ 600 秒 |
compaction_latency_earliest_uncompacted_file:メトリック値 ≥ 600 秒 | |
| ディメンションの選択 | テーブル |
| メトリック間の関係 | いずれかの条件が満たされた場合にアラートを生成 |
| アラートしきい値のトリガー | 連続 1 サイクル(1 サイクル = 1 分) |

次のステップ
GetTableCompactionInfo — アラートしきい値の調整前に、テーブルの現在のコンパクション状態を照会します。