Data Lake Formation (DLF) のストレージ最適化は、テーブルレベルの適応型コンパクション、期限切れスナップショットのクリーンアップ、パーティションのライフサイクル管理、孤立ファイルのクリーンアップなどの機能をサポートしています。これらの機能は、Paimon テーブルの使用とメンテナンスの複雑さを軽減し、コンピューティングリソースとストレージリソースの効率を向上させるのに役立ちます。このトピックでは、DLF がバックグラウンドで実行するインテリジェントなストレージ最適化戦略と、その実行方法について説明します。
Iceberg テーブルには、自動ストレージ再利用メカニズムがありません。ストレージコストの急増を避けるために、期限切れのスナップショットと孤立ファイルを定期的に手動でクリーンアップする必要があります。詳細については、「Iceberg テーブルのストレージ管理」をご参照ください。
ストレージ最適化戦略
戦略タイプ | 説明 | DLF の実行メカニズム |
コンパクション機能は、小さなファイルを大きなファイルにマージして、総ファイル数を削減します。このプロセスにより、メタデータ管理のオーバーヘッドとクエリ中のファイル検索コストが削減され、Paimon テーブルのクエリパフォーマンスと効率が向上します。 | ユーザーがデータをコミットすると、DLF は自動的にコンパクションをトリガーします。 | |
対応するスナップショットファイルが存在する限り、履歴データファイルは削除できません。これにより、履歴状態の読み取りが保証されます。新しいスナップショットが作成されると、履歴データはより多くのストレージ領域を消費します。古いスナップショットを削除して、非アクティブなデータファイルが占有しているストレージ領域を解放する必要があります。このプロセスは、ストレージリソースの管理と解放に役立ちます。 | DLF のストレージ最適化ジョブが実行されると、DLF は自動的にスナップショットのクリーンアップをトリガーします。スナップショットのデフォルトの生存時間 (TTL) は 1 時間です。Paimon テーブルのパラメーターを使用して TTL を調整できます。詳細については、「期限切れデータのクリーンアップ」をご参照ください。 | |
ビジネスシナリオでは、多くの場合、最近のデータへのアクセスのみが必要です。このような場合、時間でデータをパーティション分割し、パーティション TTL を設定して古い履歴パーティションを自動的に削除し、ストレージ領域を解放できます。また、ストレージ階層化を構成して、アクセス頻度の低いパーティションのデータを、標準などのパフォーマンス専有型ストレージから、低頻度アクセス、アーカイブストレージ、またはコールドアーカイブなどの低コストストレージに移動することもできます。この方法は、ビジネスニーズを満たしながらストレージコストを削減します。 | Paimon テーブルのパラメーターを使用して TTL を設定できます。詳細については、「パーティションの有効期限の設定」をご参照ください。パラメーターを設定すると、ストレージ最適化ジョブの実行時に DLF が自動的にプロセスをトリガーします。また、「インテリジェント階層化」を使用して、対象となるパーティションデータを、標準、低頻度アクセス、アーカイブストレージ、コールドアーカイブなどの指定されたストレージクラスに自動的に移動することもできます。さらに、テーブル詳細ページで「手動でストレージクラスを変更」することもできます。「ストレージ概要」ページでは、データカタログ、データベース、データテーブルのストレージ階層化の分布を表示できます。 | |
ジョブのエラー、再起動、またはその他の問題により、コミットされていない一時ファイルが Paimon テーブルディレクトリに残ることがあります。これらの孤立ファイルはどのスナップショットからも参照されておらず、スナップショットの有効期限切れメカニズムでは削除できません。したがって、定期的にクリーンアップする必要があります。 | 孤立ファイルのデフォルトの保持期間は 7 日間です。この期間より古い孤立ファイルは期限切れと見なされ、DLF によって自動的にクリーンアップされます。DLF は 7 日ごとにクリーンアップタスクをトリガーします。 |
インテリジェントストレージ最適化の有効化または無効化
[ストレージ最適化] タブは、Paimon テーブルを作成した場合にのみ表示されます。
[Data Lake Formation コンソール] にログインします。
[データカタログ] ページで、カタログの名前をクリックします。
[データベース] タブで、対象のデータベースの名前をクリックして、そのデータテーブルを表示します。
[テーブルリスト] で、対象のテーブルの名前をクリックして、そのソーステーブルの列を表示します。
[ストレージ最適化] タブをクリックします。インテリジェントストレージ最適化スイッチはデフォルトで有効になっています。スイッチ
をクリックして無効にします。
ストレージ最適化戦略の表示と設定
コンパクション
[ストレージ最適化] タブで [コンパクション] をクリックして、小規模ファイルのマージの実行ステータス、リスケールレコード、および実行履歴を表示します。
必要に応じてポリシーモードを編集します:
動的リソースモード (推奨)
システムはリアルタイムのペイロードに基づいてコンピューティングリソースを自動的にスケーリングします。このモードでは手動での容量計画は不要で、トラフィックの変動が大きいシナリオに適しています。
3 つの設定プリファレンスがサポートされています:
リソースとレイテンシーのバランス:マージ速度とリソース消費の最適なバランスを見つけます (デフォルト)。
レイテンシー優先:より多くのリソースを割り当てて、マージをできるだけ早く完了させ、データの可視性レイテンシーを削減します。
リソース優先:リソース使用量を制限してコンピューティングコストを削減し、より長いマージ時間を許容します。
固定リソースモード
コンパクション用のコンピューティングリソースの量を手動で指定します。このモードは、トラフィックが安定しているシナリオや、厳格なコスト管理要件があるシナリオに適しています。
要件:コンピューティングリソースは少なくとも 2 コンピューティングユニット (CU) である必要があります。
パラメーター設定:コンパクションのトリガー間隔とバケット数をカスタマイズできます。
実行ステータスの表示
現在のテーブルの最適化実行ステータスを表示できます。また、CloudMonitor のアラートサブスクリプションをカスタマイズすることもできます。メトリックと設定手順の詳細については、「レイクハウス テーブルの最適化の監視」をご参照ください。
リスケールレコードの表示
このセクションには、データテーブルまたは特定のパーティションのバケットリスケーリングの履歴イベントが記録されます。これは、テーブルの基盤となる物理ストレージ構造の変更を反映しています。リスケールメカニズムは、主にデータ量の変化によって引き起こされるパフォーマンスの問題を解決するために使用されます。リスケールレコードを使用して、テーブルがリスケール中であるためにコンパクションが行われていないかどうかを判断できます。
実行履歴の表示
現在のテーブルの小規模ファイルマージの実行履歴を表示できます。この履歴は、システムが断片化されたファイルをどのように処理して読み取りパフォーマンスとストレージ領域を最適化するかを示しています。これらのレコードを使用して、次のことができます:
タスク実行の確認:バックグラウンドのマージタスクが正しく実行されていることを確認し、小規模ファイルの無限の蓄積を防ぎます。
圧縮効率の評価:マージ前後のファイルの数とサイズを比較して、現在のコンパクション戦略が合理的であるかどうかを評価します。
期限切れスナップショットのクリーンアップ
[ストレージ最適化] タブで [スナップショットの有効期限] をクリックして、スナップショットのクリーンアップルールを設定し、結果を表示します。
スナップショットのクリーンアップルールの設定
[編集] をクリックし、[スナップショット保持期間] (デフォルトは 1 時間) を設定してから、[保存] をクリックします。
スナップショットのクリーンアップ結果の表示
現在のスナップショット数:残っているスナップショットの現在の数をリアルタイムで表示します。
最も古いスナップショット情報:テーブル内の最も古いスナップショットの詳細を表示します。これには、スナップショット ID、コミット時刻、コミットタイプ、テーブル内の総行数、およびこのコミットで追加された行数が含まれます。
パーティションのライフサイクル管理
[ストレージ最適化] タブで [パーティションのライフサイクル] をクリックして、パーティションのクリーンアップルールを設定し、クリーンアップ結果を表示し、ストレージ階層化を設定します。
パーティションクリーンアップルールの設定
[パーティションクリーンアップの有効化] の右側にある
スイッチをクリックして、パーティションクリーンアップを有効にします。パーティションクリーンアップを有効にした後、必要に応じて次のルールを設定し、[保存] をクリックします。
対応するテーブルオプションのキーと値のペアを設定することでも、設定を完了できます。
設定項目
説明
有効期限ポリシー
(partition.expiration-strategy)
次のいずれかの有効期限ポリシーを選択できます:
最終アクセス時刻 (access-time):パーティションデータの最終アクセス時刻に基づいて有効期限を決定します。
パーティション値 (values-time):パーティションのタイムスタンプフォーマットとパーティションフィールドパターンを設定できます。
タイムスタンプフォーマット (partition.timestamp-formatter):
yyyy-MM-dd、yyyyMdd、dd/MM/yyyy、dd.MM.yyyyなどのフォーマットを設定できます。タイムスタンプパターン (partition.timestamp-pattern): デフォルトでは、最初のパーティションフィールドが使用されます。
$dtや$year-$month-$dayなどのパターンを設定できます。
最終更新時刻 (update-time):最も細かい粒度でパーティションデータの最終更新時刻に基づいて有効期限を決定します。
パーティション保持期間
(partition.expiration-time)
単位:日。
30dのような値を設定できます。最大値は 999999 日です。保持期間の開始時刻は、選択した有効期限ポリシーによって決まります。(オプション) 保存後、[ルール設定] の横にある [編集] をクリックして、設定を再度変更することもできます。
パーティションを永続的に保持したい場合は、パーティションの有効期限クリーンアップルールを設定しないでください。デフォルトでは、システムはパーティションデータを自動的にクリーンアップしません。
パーティションクリーンアップ結果の表示
[パーティションリストの表示] をクリックして、現在のデータテーブルのパーティションリストを表示します。リストには、パーティション名、行数 (物理)、参照ファイル数、合計ファイルサイズ、作成者、ストレージクラス、最終更新者、作成時刻、最終更新時刻、および操作が含まれます。
ストレージ階層化の設定
設定項目 | 説明 |
インテリジェントストレージ階層化 |
説明
|
階層化ポリシー |
|
階層化ルール | ストレージクラスごとに、最低保管期間の要件が異なります。 次の階層化ルールを設定できます:
|
「インテリジェント階層化」機能に加えて、テーブル詳細ページで「手動でストレージクラスを変更」することもできます。「ストレージ概要」ページで、データカタログ、データベース、データテーブルのストレージ階層化の分布を表示することもできます。
孤立ファイルのクリーンアップ
[ストレージ最適化] タブで [孤立ファイルの削除] をクリックして、孤立ファイルのクリーンアップルールを表示します。たとえば、孤立ファイルのデフォルトの保持期間は 7 日間で、これはファイルの書き込み時間によって決まります。システムは、この期間より古い期限切れの孤立ファイルを自動的にクリーンアップします。
ストレージクラスの手動変更
[データベース] リストで、データベース名をクリックしてテーブルリストを表示します。
[テーブルリスト] で、テーブル名をクリックしてテーブルフィールドを表示します。
[テーブル詳細] タブをクリックします。パーティションテーブルと非パーティションテーブルのストレージクラスを手動で変更できます。
パーティションテーブル
[パーティションリスト] タブで、異なるストレージクラスのパーティションのストレージクラスを変更できます。
標準、低頻度アクセス、またはアーカイブストレージクラスのパーティション:
[操作] 列で、[ストレージクラスの変更] をクリックします。現在のストレージクラス以外の任意のストレージクラスに変更できます。
コールドアーカイブストレージクラスのパーティション:
オブジェクトのストレージクラスを変換する前に、オブジェクトが解凍状態である必要があります。手順は次のとおりです:
[復元] をクリックします。[復元状態の期間] を設定し、バッチ復元用のパーティションを選択できます。
有効値:1 から 365 までの正の整数。単位:日。
デフォルト値:1 日。
データが解凍状態になったら、[操作] 列の [ストレージクラスの変更] をクリックして、別のストレージクラスに変更します。
非パーティションテーブル
テーブルの [基本情報] セクションで、[ストレージクラス] を変更できます。
標準、低頻度アクセス、またはアーカイブストレージクラス
ストレージクラスを変更するには、[ストレージクラス] の右側にある [変更] をクリックします。
コールドアーカイブストレージクラス
まずデータを解凍する必要があります。データが解凍され、ステータスが解凍済みに変わったら、ストレージクラスを変更できます。次の手順を実行します:
[ストレージクラス] の横にある [復元] をクリックします。[復元状態の保持期間] を設定できます。
有効値:1 から 365 までの正の整数。単位:日。
デフォルト値:1 日。
[ストレージクラス] がコールドアーカイブ (解凍済み) の場合、[ストレージクラス] の横にある [変更] をクリックして、別のストレージクラスを選択します。
説明解凍時間:オブジェクトを解凍するのにかかる時間。コールドアーカイブストレージクラスでは、標準の解凍優先度のみがサポートされます。解凍には 2〜5 時間かかります。
解凍状態の開始時刻:解凍操作が完了した後、パーティション内のコールドアーカイブストレージクラスの最初のオブジェクトが「解凍状態」になる時刻。
解凍状態の期間:パーティション内のコールドアーカイブストレージクラスの最初のオブジェクトが解凍された後、データが「解凍状態」を維持する期間。パーティション内のすべてのオブジェクトが解凍されると、パーティションに対して通常の読み取り、書き込み、またはストレージクラスの変更操作を実行できます。解凍状態の期間が終了すると、パーティション内のデータは凍結状態に戻り、直接アクセスできなくなります。操作を実行するには、再度解凍する必要があります。
復元プロセス
最初に、オブジェクトは凍結状態にあります。
解凍リクエストを送信すると、オブジェクトは解凍中状態になります。実際の解凍時間は異なる場合があります。
サーバー側で解凍タスクが完了すると、オブジェクトは解凍状態になります。テーブルレベルのストレージ階層化の場合、パーティション内のすべてのオブジェクトが解凍された後、パーティションに正常にアクセスできます。
パーティションの解凍状態の期間を調整することで、解凍状態の合計期間を延長できます。ただし、合計期間は、そのストレージクラスで許可されている最大制限を超えることはできません。
解凍状態の期間が終了すると、オブジェクトは元のストレージクラスを変更せずに凍結状態に戻ります。データに再度アクセスするには、新しい解凍リクエストを送信し、それが完了するのを待つ必要があります。
有効にすると、設定したライフサイクルルールに基づいて、カタログ内のすべてのテーブルのストレージが自動的に階層化されます。ビジネスニーズに基づいて階層化ポリシーとルールを指定します。