に最終更新
ワークロード管理の概要:リソース分離、スロットリング、サーキットブレーク
Doris のワークロード管理機能は、複数のテナントや業務部門が単一のクラスターを共有する際のリソース競合に対処します。ワークロード管理ポリシーを適切に設定することで、リソースを分離し、クエリによるクラスターの過負荷を防ぎ、業務の SLA を守ることができます。
主な機能は次の三つです。
- リソース分離:クラスターのリソース(CPU、メモリ、IO)を複数のグループに分け、異なるユーザーや業務部門が互いに影響しないようにします。
- 同時実行制御とキューイング:クラスターが同時に実行するタスクの数を制限します。しきい値を超えると新しいタスクが自動的にキューに入り、同時実行数の急増によるシステムの過負荷を防ぎます。
- サーキットブレーク:クエリの計画段階または実行中に、スキャンするデータ量、割り当てられたメモリ、実行時間などの条件に基づいて異常なタスクを自動的にキャンセルし、単一のクエリがリソースを過度に消費することを防ぎます。
リソースの分割方法
Doris は、デプロイモードと分離要件に応じて、次の三つのリソースグループ化方法を提供します。
| リソース分離の方法 | 分離の単位 | ソフトリミット/ハードリミット | グループ間クエリ | 適用シナリオ |
|---|---|---|---|---|
| Resource Group | サーバーノード単位でリソースを完全に分離し、BE の障害も分離できる | ハードリミットのみ | サポートされない。少なくとも一つのレプリカをリソースグループ内に保存する必要がある | ストレージ・コンピュート一体型モードでの強力な分離 |
| Workload Group | BE プロセス内で分離するため、BE の障害は分離できない | ソフトリミットとハードリミット | サポートされる | きめ細かなリソース割り当て、突発的なトラフィックの制御 |
| Compute Group | サーバーノード単位でリソースを完全に分離し、BE の障害も分離できる | ハードリミットのみ | サポートされない | ストレージ・コンピュート分離型モードでの強力な分離 |
各方法の詳細は次のとおりです。
- Resource Group:BE ノードを最小単位とし、タグを設定してクラスターを複数のリソースグループに分けます。ストレージ・コンピュート一体型モードに適用します。
- Workload Group:Cgroups を使用して単一の BE 内のリソースをさらに分割し、プロセス内でのきめ細かなリソース割り当てを可能にします。
- Compute Group:ストレージ・コンピュート分離型モードのリソースグループ化方法です。Resource Group と同様に、BE ノードを最小単位とします。
ソフトリミットとハードリミット
ハードリミットは、どのテナントも超えられないリソース使用量の絶対的な上限です。ハードリミットに達すると、上限を超えるリソース要求は直ちに拒否されます。ハードリミットは、クラスターのリソースの枯渇や業務部門間での競合を防ぎ、クラスター全体の安定性を守ります。
ソフトリミットは、一時的に超えることができるリソース使用量の上限です。システムに余裕がある場合、テナントは他のリソースグループの未使用リソースを借りることができます。システムが高負荷でリソース競合が生じている場合、ソフトリミットを超える要求には追加のリソースが割り当てられません。ソフトリミットは、クエリの一時的な急増や短期間のデータ取り込み量の増加など、突発的なトラフィックに適しています。
リソースの分割方法とリミットの種類の対応は次のとおりです。
| 分割方法 | ソフトリミットのサポート | ハードリミットのサポート |
|---|---|---|
| Resource Group | なし | あり |
| Workload Group | あり | あり |
| Compute Group | なし | あり |
関連ドキュメント
- Resource Group - ノードのタグに基づくリソースグループの設定
- Workload Group - Cgroups に基づくプロセス内のリソースグループの設定
- Compute Group - ストレージ・コンピュート分離型モードでのリソースグループの設定
- 同時実行制御とキューイング - クエリの同時実行数の上限とキューポリシーの設定
- サーキットブレークと SQL ブロック - クエリのサーキットブレークルールの設定
- ワークロードの分析と診断 - リソースのボトルネックとパフォーマンスの問題の調査