本トピックでは、エンタープライズレベルの状態バックエンドストレージ GeminiStateBackend を使用する際に設定可能なチューニングパラメーターについて説明します。
背景情報
ほとんどのシナリオでは、GeminiStateBackend は適応的パラメーターチューニング機能に基づいてパラメーター設定を自動的に調整するため、手動での設定は不要です。ビジネスシナリオに応じて、特定の基本設定を調整するだけで済みます。詳細については、「基本パラメーター」をご参照ください。特定のシナリオでは、パラメーターを設定してパフォーマンスをさらに最適化できます。本トピックでは、次のシナリオにおける特定のパラメーター設定について説明します。
メモリリソースとパフォーマンスを調整したい場合は、メモリ関連のパラメーターを設定します。詳細については、「メモリ関連パラメーター」をご参照ください。
ローカルディスクの領域が不足している場合は、計算ストレージ分離のパラメーターを設定します。詳細については、「計算ストレージ分離のパラメーター」をご参照ください。
JOIN 演算子にパフォーマンスのボトルネックがある場合は、キーバリュー分離のパラメーターを設定します。詳細については、「キーバリュー分離のパラメーター」をご参照ください。
エンタープライズレベルの状態ストレージの詳細については、「GeminiStateBackend」をご参照ください。エンタープライズレベルの状態ストレージの設定方法の詳細については、「状態セットの管理」をご参照ください。
基本パラメーター
パラメーター | 説明 | データ型 | デフォルト値 | 備考 |
table.exec.state.ttl | SQL デプロイメントにおける状態データの TTL。 | LONG | デフォルト値は 129600000 で、1.5 日に相当します。 | 単位:ミリ秒。たとえば、このパラメーターを 129600000 に設定すると、状態データの TTL は 1.5 日になります。このパラメーターは、state.backend.gemini.ttl.ms パラメーターと同時に使用することはできません。 説明 ビジネス要件に基づいて、このパラメーターに小さい値を設定することを推奨します。 TTL を変更した後にスナップショットからジョブを復元した場合、新しい TTL 設定は新しく書き込まれたデータにのみ有効になります。既存のデータには、引き続き古い TTL 設定が適用されます。 |
state.backend.gemini.ttl.ms | DataStream デプロイメントまたは Python デプロイメントにおける状態データの TTL。 | LONG | (なし) | 単位:ミリ秒。たとえば、このパラメーターを 129600000 に設定すると、状態データの TTL は 1.5 日になります。このパラメーターは、table.exec.state.ttl パラメーターと同時に使用することはできません。 説明 ビジネス要件に基づいて、このパラメーターに小さい値を設定することを推奨します。 |
state.backend.gemini.savepoint.external-sort.local-storage.enabled | セーブポイント作成時に生成される一時データをローカルディスクに保存するかどうかを指定します。 | ブール値 | false | 有効値:
説明
|
メモリ関連パラメーター
パラメーター | 説明 | データ型 | デフォルト値 | 備考 |
state.backend.gemini.memory.managed | GeminiStateBackend が管理メモリに基づいてメモリを自動的に割り当てるかどうかを指定します。 | ブール値 | true | 有効値:
説明
|
state.backend.gemini.total.writebuffer.size | WriteBuffer によって占有されるメモリの合計サイズ。 | 文字列 | 128 MB | このパラメーターは、state. backend. gemini. memory. managed パラメーターが false に設定されている場合に有効になります。それ以外の場合、WriteBuffer によって占有されるメモリの合計サイズは、管理メモリに基づいて自動的に計算されます。 このパラメーターを設定する際は、値に単位を追加する必要があります。単位は B、KB、MB、または GB が使用できます。 説明
|
state.backend.gemini.offheap.size | GeminiStateBackend によって使用されるオフヒープメモリのサイズ。 説明 GeminiStateBackend によって使用されるオフヒープメモリには、WriteBuffer によって占有されるメモリは含まれません。 | 文字列 | (なし) | このパラメーターは、state. backend. gemini. memory. managed パラメーターが false に設定されている場合に有効になります。 それ以外の場合、GeminiStateBackend によって使用されるオフヒープメモリのサイズは、マネージドメモリに基づいて自動的に計算されます。 このパラメーターを設定する際は、値に単位を追加する必要があります。単位は B、KB、MB、または GB が使用できます。 説明
|
Apache Flink のチェックポイントと状態バックエンドの基本設定は、GeminiStateBackend にも適用されます。詳細については、「チェックポイントと状態バックエンド」をご参照ください。
計算ストレージ分離のパラメーター
パラメーター | 説明 | データ型 | デフォルト値 | 備考 |
state.backend.gemini.file.cache.type | 計算ストレージ分離モード。 | 文字列 | デフォルト値は LIMITED です。 | 有効値:
|
state.backend.gemini.file.cache.preserved-space | TaskManager 上で確保しておくべきディスク空き容量。 | 文字列 | 2 GB | 実際の利用可能なディスク領域がこのパラメーターの値より小さい場合、GeminiStateBackend は状態データを DFS に保存して、ローカルディスクの容量不足を回避します。 このパラメーターを設定する際は、値に単位を追加する必要があります。単位は B、KB、MB、または GB が使用できます。 説明
|
Object Storage Service (OSS) クライアント SDK は、ファイルをアップロードする前に、ファイルからローカルディスクにデータを書き込みます。したがって、OSS を DFS として使用すると、予期しないディスク領域の使用が発生する可能性があります。Flink がセーブポイントを作成するとき、単一の状態バックエンドは 1 つのファイルしか生成しません。その結果、大きな非圧縮ファイルが生成され、そのファイルがディスク領域を占有します。このシナリオでは、計算ストレージ分離機能は失敗します。この問題を解決するには、並列度を上げて、単一ノード上の状態データのサイズを削減する必要があります。
キーバリュー分離のパラメーター
パラメーター | 説明 | データ型 | デフォルト値 | 備考 |
state.backend.gemini.kv.separate.mode | キーバリュー分離モード。 | 文字列 | デフォルト値は SPECIFIED_TABLE_ENABLE です。 | 有効値:
説明
|
state.backend.gemini.kv.separate.value.size.threshold | キーバリュー分離が有効になった後、キーバリュー分離をトリガーする値サイズのしきい値。 | INTEGER | 200 | 値がこのしきい値に達したレコードのキーと値は、個別に保存されます。推奨値の範囲は 150 から 1000 です。JOIN 操作の成功率に基づいて、このパラメーターの値を調整できます。JOIN 操作の成功率が高い場合は、このパラメーターに大きな値を設定できます。 単位:バイト。 説明 適応的パラメーターチューニングモードが有効な場合、エンジンはデータ特性に基づいてこのパラメーターを動的に調整します。このパラメーターを明示的に設定する必要はありません。 |
適応的パラメーターチューニングのパラメーター
パラメーター | 説明 | データ型 | デフォルト値 | 備考 |
state.backend.gemini.auto-tune.mode | 適応的パラメーターチューニングモード。 | 文字列 | ACTIVE | 有効値:
説明
|
state. backend. gemini. auto-tune. burst. start. x | 適応的パラメーターチューニングが有効な場合に、パフォーマンス優先モードが使用される期間。 | 文字列 | (なし) | パラメーター名の x は、数値に置き換えることができます。 start. x は end. x に対応します。 この 2 つのパラメーターを設定して、複数の期間を指定できます。 パラメーターの値は、yyyy-MM-dd HH: mm: ss 形式です。 パフォーマンス要件よりも秒間トランザクション数 (TPS) の要件が高い場合は、これら 2 つのパラメーターを設定できます。GeminiStateBackend は、これらのパラメーターで指定された期間中に TPS 優先ポリシーを使用して、より高い TPS を実現します。ただし、これら 2 つのパラメーターを設定すると、より多くのリソースが消費されます。リソースとは、CPU コアとメモリを指します。 説明
|
state.backend.gemini.auto-tune.burst.end.x |