このトピックでは、エンタープライズレベルのステートバックエンドである GeminiStateBackend のチューニングパラメーターについて説明します。
背景情報
ほとんどのシナリオでは、GeminiStateBackend は適応型チューニング機能を使用してパラメーターを自動的に調整するため、手動で構成する必要はありません。ビジネスシナリオに基づいて、いくつかの基本構成を調整するだけで済みます。詳細については、「基本構成」をご参照ください。特定のシナリオでは、特定の構成を有効にして、対象を絞ったチューニングを行うことができます。例:
-
メモリリソースとパフォーマンスのバランスを取るには、メモリ構成を使用できます。詳細については、「メモリ構成」をご参照ください。
-
ローカルディスク領域が不足した場合は、計算ストレージ分離構成を使用できます。詳細については、「計算ストレージ分離構成」をご参照ください。
-
Join オペレーターでパフォーマンスボトルネックが発生した場合は、キーと値の分離構成を使用できます。詳細については、「キーと値の分離構成」をご参照ください。
エンタープライズレベルのステートバックエンドの概要とその構成方法については、「エンタープライズレベルのステートバックエンドの概要」および「ステート関連パラメーターの設定」をご参照ください。
基本構成
|
パラメーター |
説明 |
データ型 |
デフォルト値 |
注意 |
|
table.exec.state.ttl |
SQL ジョブのステートの生存時間 (TTL) です。 |
Long |
|
単位はミリ秒です。たとえば、値が 129600000 の場合、TTL は 1.5 日であることを意味します。このパラメーターは state.backend.gemini.ttl.ms と併用できません。 説明
必要に応じて短い値を設定してください。 |
|
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 |
有効値:
説明
|
メモリ構成
次のメモリ構成パラメーターは VVR 4.0 以降でサポートされています。
|
パラメーター |
説明 |
データ型 |
デフォルト値 |
注意 |
|
state.backend.gemini.memory.managed |
GeminiStateBackend がマネージドメモリに基づいてメモリを自動的に割り当てるかどうかを指定します。 |
ブール値 |
true |
有効値:
説明
|
|
state.backend.gemini.total.writebuffer.size |
WriteBuffer が占有する合計メモリサイズです。 |
String |
128 MB |
このパラメーターは、state.backend.gemini.memory.managed が false に設定されている場合にのみ有効になります。それ以外の場合、WriteBuffer の合計メモリサイズは、マネージドメモリに基づいて自動的に計算されます。 このパラメーターを構成するときは、単位のサフィックスを追加する必要があります。有効な単位は B、KB、MB、GB です。 説明
|
|
state.backend.gemini.offheap.size |
GeminiStateBackend によって使用されるオフヒープメモリのサイズです。 説明
Gemini によって使用されるこのオフヒープメモリには、WriteBuffer によって使用される部分は含まれません。 |
String |
(なし) |
このパラメーターは、state.backend.gemini.memory.managed が false に設定されている場合にのみ有効になります。それ以外の場合、GeminiStateBackend によって使用されるオフヒープメモリのサイズは、マネージドメモリに基づいて自動的に計算されます。 このパラメーターを構成するときは、単位のサフィックスを追加する必要があります。有効な単位は B、KB、MB、GB です。 説明
|
Apache Flink のチェックポイントと StateBackend の基本構成は、GeminiStateBackend にも適用されます。詳細については、「Checkpoints and State Backends」をご参照ください。
計算ストレージ分離構成
次の計算ストレージ分離構成パラメーターは、VVR 4.0.11 以降でサポートされています。
|
パラメーター |
説明 |
データ型 |
デフォルト値 |
注意 |
|
state.backend.gemini.file.cache.type |
計算ストレージ分離モードです。 |
String |
|
有効値:
|
|
state.backend.gemini.file.cache.preserved-space |
単一の TaskManager 上でステートデータに利用可能な残りのディスク領域です。 |
String |
2 GB |
実際の空き領域がこの値を下回ると、GeminiStateBackend はステートデータを DFS に保存して、ローカルストレージの制限を克服します。 このパラメーターを構成するときは、単位のサフィックスを追加する必要があります。有効な単位は B、KB、MB、GB です。 説明
|
分散ファイルシステムとして Object Storage Service (OSS) を使用する場合、OSS クライアント SDK は、アップロードする前にファイル全体をローカルディスクに書き込みます。これにより、予期しないディスク領域の使用が発生する可能性があります。たとえば、Flink がセーブポイントを作成すると、単一の StateBackend はローカルに 1 つの大きな非圧縮ファイルを生成します。このシナリオでは、計算ストレージ分離は効果的ではありません。並列度を上げるなど、他の方法を使用して、シングルノードのステートサイズを削減できます。
キーと値の分離構成
次のキーと値の分離構成パラメーターは、VVR 4.0.12 以降でサポートされています。
|
パラメーター |
説明 |
データ型 |
デフォルト値 |
注意 |
|
state.backend.gemini.kv.separate.mode |
キーと値の分離モードです。 |
String |
|
有効値:
説明
|
|
state.backend.gemini.kv.separate.value.size.threshold |
キーと値の分離が有効になっている場合、これはキーと値の分離をトリガーする値サイズのしきい値です。 |
Integer |
200 |
このしきい値に達したレコードは、キーと値が別々に保存されます。推奨される値の範囲は 150 から 1000 です。結合成功率に基づいてこのパラメーターを調整します。結合成功率が高いほど、より大きなパラメーター値を設定できます。 単位はバイトです。 説明
VVR 6.0.1 以降では、適応型チューニングモードを有効にしている場合、エンジンはこのパラメーターをデータ特性に基づいて動的に調整します。明示的に構成する必要はありません。 |
適応型チューニング構成
次の適応型チューニング構成パラメーターは、VVR 4.0.12 以降でサポートされています。
|
パラメーター |
説明 |
データ型 |
デフォルト値 |
注意 |
|
state.backend.gemini.auto-tune.mode |
適応型チューニングモードです。 |
String |
ACTIVE |
有効値:
説明
|
|
state.backend.gemini.auto-tune.burst.start.x |
適応型チューニングでパフォーマンス優先モードを使用する期間です。 |
String |
(なし) |
パラメーター名の `x` は任意の数値です。`start.x` は `end.x` に対応します。これらを使用して、複数の期間を設定できます。パラメーター値のフォーマットは yyyy-MM-dd HH:mm:ss です。 全体的な効率ではなく、より高い秒間トランザクション数 (TPS) が必要な場合は、これら 2 つのパラメーターを構成します。指定された期間中、GeminiStateBackend は TPS 優先ポリシーを使用します。このポリシーは、より高い TPS を達成するために、CPU やメモリなどのより多くのリソースを消費します。 説明
|
|
state.backend.gemini.auto-tune.burst.end.x |