Realtime Compute for Apache Flink は、手動でのリソース管理を削減するために、Autopilot とスケジュールチューニングという 2 つの自動チューニングモードを提供します。手動チューニングでは、ジョブの開始前にリソースを割り当て、ジョブの実行中に割り当てを調整して使用率を最大化し、バックプレッシャーやレイテンシースパイクに対応する必要があります。どちらのモードもこれらの決定を自動化するため、継続的な介入なしにジョブの効率を維持できます。
チューニングモードの選択
| チューニングモード | 使用するケース | 仕組み | リファレンス |
|---|---|---|---|
| [Autopilot] | ワークロードが変動的または予測不可能で、CPU、メモリ、またはレイテンシの変化にシステムを自動的に応答させたい場合。 | システムはライブメトリクスを継続的に監視し、手動介入なしで並列度、CPU、メモリを調整します。 | Autopilot の有効化と設定 |
| スケジュールチューニング | トラフィックが予測可能なパターン (たとえば、毎日のピーク時とオフピーク時) に従っており、リソースの変更を事前に計画できる場合。 | 時間ベースのリソースプランを定義します。システムは、設定されたトリガー時間にそれらを適用します。 | スケジュールチューニングプランの設定と適用 |
制限事項と考慮事項
非整列チェックポイント:非整列チェックポイントが有効になっている場合、ジョブの並列度は変更できません。
セッションクラスター:セッションクラスターで実行されているジョブでは、Autopilot はサポートされていません。
YAML で開発されたジョブ:YAML を使用して開発されたジョブでは、自動チューニングはサポートされていません。
ハードコードされた並列度:カスタムコネクタを使用する Flink SQL ジョブや DataStream API ジョブでは、並列度をハードコードしないでください。ハードコードされた値は、自動チューニングの設定を上書きします。
最大リソースプラン数:最大 20 個のリソースプランを作成できます。
相互に排他的なプラン:一度に適用できるスケジュールチューニングプランは 1 つだけです。別のプランを適用する前に、アクティブなプランを停止してください。
ジョブの再起動:自動チューニングによってジョブが再起動され、一時的にデータ消費が停止することがあります。
リソース変更の動作:自動チューニングが変更を適用する際、システムは変更前後の設定を比較して更新方法を決定します。CPU またはメモリの変更が含まれる場合、デプロイメントは再起動します。並列度のみが変更される場合は、ダウンタイムを最小限に抑えるために動的な更新が適用されます。
パフォーマンスのボトルネック:Autopilot は、すべてのストリーミングパフォーマンスのボトルネックを解決するわけではありません。トラフィックがスムーズに変化し、データスキューがなく、オペレーターのスループットが並列度に応じて線形にスケールする場合に最も効果的に機能します。これらの条件を満たさない場合、次のような状況が発生する可能性があります:
-
並列度の変更が失敗したり、ジョブが安定状態に達することなく繰り返し再起動したりします。
-
ユーザー定義スカラー関数 (UDF)、ユーザー定義集計関数 (UDAF)、またはユーザー定義テーブル値関数 (UDTF) のパフォーマンスが低下します。
外部システムの問題:Autopilot は外部システムの問題を検出しません。外部システムに障害が発生したり、応答が遅くなったりすると、Autopilot はジョブの並列度を上げてしまい、すでに負荷の高いシステムにさらに負荷をかける可能性があります。一般的な外部システムの問題には、次のものがあります:
-
DataHub パーティションの不足、または ApsaraMQ for RocketMQ のスループットの低下。
-
シンクオペレーターのパフォーマンスの低下。
-
ApsaraDB RDS データベースでのデッドロック。
Autopilot の有効化と設定
Autopilot 戦略
ワークロードの特性に基づいて戦略を選択します:
| 戦略 | 最適なケース | 仕組み |
|---|---|---|
| 適応型戦略 (推奨) | 変動の激しいワークロード、レイテンシに敏感な、データスキューがある、または負荷分散が不均一な場合。 | リアルタイムのメトリクスに基づいてリソース設定を継続的に調整し、需要の変化に迅速に対応します。 |
| [安定戦略] | 安定的で予測可能なワークロードで、再起動のコストが高く、固定プランへの収束が望ましい場合。 | ジョブの全実行サイクルにわたって、固定またはスケジュールされたリソースプランを目指します。設定が収束した後、システムは保存して再利用できるリソースプランを出力します。ジョブの再起動やホットアップデートにより、収束プロセスはリセットされます。 |
操作手順
-
Autopilot の設定ページに移動します。
-
目的のワークスペースを見つけ、[アクション] 列の [コンソール] をクリックします。
-
左側のナビゲーションペインで、[O&M] > [デプロイ] を選択し、対象のデプロイの名前をクリックします。
-
[リソース] タブで、[Autopilot モード] サブタブを選択します。
-
[Autopilot] をオンにします。[Autopilot モード適用中] が [リソース] タブの下に表示されます。Autopilot を無効にするには、トグルをオフにするか、[Autopilot をオフにする] をクリックします。
-
[設定] セクションで [編集] をクリックしてストラテジーを選択し、パラメーターを設定します。
(推奨) 適応型戦略
適応型戦略のパラメーター
パラメーター 説明 [Max CPU] ジョブが使用できる CPU コアの最大数。デフォルト: 64 コア。 [Max Memory] ジョブが使用できるメモリの最大量。デフォルト: 256 GiB。 [Max Parallelism] ジョブの並列度の最大値。デフォルト: 1,024。ApsaraMQ for Kafka、Message Queue、Simple Log Service、またはその他のメッセージキューサービスと統合されている場合、設定値がパーティション数を超えると、システムは自動的にこの値をパーティション数に制限します。 [Min Parallelism] ジョブの並列度の最小値。デフォルト: 1。 [Scale Up Rules] スケールアップをトリガーする条件。いずれか 1 つの条件が満たされると、アクションがトリガーされます。設定可能な条件:
- 遅延が指定された期間、しきい値を超え続けること。
- オペレーターの平均ビジー率が指定された期間、しきい値を超え続けること。
- TaskManager のメモリ使用率が指定された期間、しきい値を超え続けること。
- メモリ不足 (OOM) エラーが発生すること。
- TaskManager または JobManager が 1 秒あたりにガベージコレクションに費やす時間が、指定された期間、しきい値を超え続けること。説明履歴データに基づいてしきい値を設定するか、最初は緩めの値から始めて徐々に厳しくしていくことを推奨します。しきい値のパーセンテージは 0〜100% の範囲です。適切な期間を設定することで、一時的な変動を除外し、過渡的なスパイクによるスケールアップを防ぐことができます。OOM は有効または無効にするだけで、しきい値は不要です。
[Scale Down Rules] スケールダウンをトリガーする条件。いずれか 1 つの条件が満たされると、アクションがトリガーされます。設定可能な条件:
- オペレーターの平均ビジー率が指定された期間、しきい値を下回り続けること。
- TaskManager のメモリ使用率が指定された期間、しきい値を下回り続けること。[Advanced Rules] 現在はテスト中であり、一般には利用できません。高度なルールを有効にするには、お問い合わせください。 安定戦略
安定戦略のパラメーター
パラメーター 説明 [Cooldown Minutes] Autopilot によってトリガーされる再起動の最小間隔。デフォルト: 10 分。 [Max CPU] ジョブが使用できる CPU コアの最大数。デフォルト: 16 コア。 [Max Memory] ジョブが使用できるメモリの最大量。デフォルト: 64 GiB。 [Max Delay] 許容されるソースの最大遅延時間。デフォルト: 1 分。 [More Configurations] 高度なパラメーター (以下の表をご参照ください)。 安定戦略:高度なパラメーター
パラメーター 説明 デフォルト mem.scale-down.intervalメモリのスケールダウン間の最小間隔。このウィンドウ内でメモリ使用率が設定されたしきい値を下回り続けると、システムはメモリ削減を調整または推奨します。 4 時間 parallelism.scale.max並列度の最大値。 -1は無制限を意味します。ApsaraMQ for Kafka、Message Queue、Simple Log Service、またはその他のメッセージキューサービスと統合されている場合、システムは自動的にこの値をパーティション数に制限します。-1 parallelism.scale.min並列度の最小値。 1 delay-detector.scale-up.thresholdスケールアップをトリガーする前に許容されるソースの最大遅延。処理能力の不足により遅延がこの値に達した場合、システムは並列度を上げるか、オペレーターの連鎖を解除してスループットを向上させます。 1 分 slot-usage-detector.scale-up.threshold非ソースオペレーターの計算/IO リソースの使用率の上限しきい値。オペレーターの処理時間比率がこの値を上回り続けると、Flink は並列度を上げます。 0.8 slot-usage-detector.scale-down.threshold非ソースオペレーターの計算/IO リソースの使用率の下限しきい値。オペレーターの処理時間比率がこの値を下回り続けると、Flink は並列度を下げます。 0.2 slot-usage-detector.scale-up.sample-intervalFlink が非ソースオペレーターのビジー率をサンプリングし、スケールアップおよびスケールダウンのしきい値と比較する間隔。 3 分 resources.memory-scale-up.maxTaskManager または JobManager がスケールアップする際のメモリサイズの最大値。 16 GiB -
[保存] をクリックします。
リソースプランの保存
[安定戦略]を使用しているジョブが収束すると、システムは保存して適用できるリソースプランを生成します。利用可能なプランは 2 種類あります:
| プランタイプ | 説明 | 適用時の動作 |
|---|---|---|
| 固定リソースプラン | 時間的要素のない単一のリソース設定。 | デプロイメントのリソース設定が保存された値で更新され、次回の起動時に適用されます。 |
| [スケジュールプラン] (パブリックプレビュー) | それぞれが期間に関連付けられた複数のリソース設定。 | チューニングモードは自動的にスケジュールチューニングに切り替わります。ジョブが安定して実行された後、リソースは調整されません。 |
固定リソースプランを保存して適用するには:
[Autopilot モード適用中] バナーで、[詳細] をクリックします。表示されたパネルで、[推奨プラン] を [指定リソース] に設定し、[保存] をクリックします。確認ダイアログボックスで、[確認] をクリックします。
スケジュールプランを保存して適用するには:
「スケジュールプランの保存と適用」をご参照ください。
スケジュールチューニングプランの設定と適用
スケジュールプランの作成と適用
-
スケジュールプランの設定ページに移動します。
-
対象のワークスペースを見つけ、[アクション] 列の [コンソール] をクリックします。
-
左側のナビゲーションペインで [O&M] > [デプロイメント] を選択し、対象のデプロイメントの名前をクリックします。
-
[リソース] タブで、[スケジュールモード] サブタブを選択します。
-
[新規プラン] をクリックします。
-
[新規プラン] パネルの [リソース設定] セクションで、プランを設定します:
-
[トリガー期間:][繰り返しなし]、[毎日]、[毎週]、または[毎月]を選択します。毎週または毎月の場合、プランが有効になる日付を指定します。
-
[Trigger Time]:プランが有効になる時刻を設定します。
-
[モード:] [Basic] または [Expert] を選択します。詳細については、「ジョブリソースの設定」をご参照ください。
-
その他のパラメーター: 「ランタイムパラメーターの設定」をご参照ください。
-
-
(オプション) [新規リソース設定期間] をクリックすると、プランにさらに時間帯を追加し、そのトリガー時間とリソース設定を構成できます。
重要トリガー時間の間隔は 30 分を超える必要があります。
-
[スケジュールモード] サブタブの [リソースプラン] セクションで、プランを見つけ、[アクション] 列の [適用] をクリックします。
スケジュールプランの保存と適用
Autopilot の[安定戦略]を使用しているジョブが収束すると、システムは観測されたリソース使用量に基づいてスケジュールプランを自動的に生成します。このプランを表示、変更、保存、適用できます。
-
Autopilot の設定ページに移動します。
-
目的のワークスペースの [アクション] 列で [コンソール] をクリックします。
-
左側のナビゲーションペインで、[O&M] > [デプロイ] の順に選択し、対象のデプロイの名前をクリックします。
-
[リソース] タブをクリックします。
-
[Autopilot モード適用中] バナーで、[詳細] をクリックします。表示されるパネルで、[推奨プラン] を [スケジュールプラン] に設定します。
-
プランを設定します:
アクション 説明 注意事項 [Max Change Count][Max Change Count] の指定 スケジュールプランに適用されるリソース変更の最大数を設定します。 許容範囲:2〜5。 [Merge time periods][Merge time periods] のクリック 指定された最大変更回数に基づいて期間をマージします。 ビジネス要件に合わせて、マージ前にリソースをスケールアップまたはスケールダウンします。 -
マージされたリソース設定を確認し、変更します。詳細については、「ジョブリソースの設定」をご参照ください。
-
左下隅の[保存]をクリックします。
-
ダイアログボックスで、[スケジュールされたプラン名] を入力するか、[このプランをすぐに適用] を選択し、[確認] をクリックします。プランが適用されると、チューニングモードは自動的にスケジュールされたチューニングに切り替わります。ジョブが安定して実行されると、Autopilot はリソースの調整を停止します。
例
この例では、毎日のトラフィックパターンを使用します:ピーク時は 09:00:00 から 19:00:00 までで 30 コンピュートユニット (CU)、オフピーク時は 19:00:00 から翌日の 09:00:00 までで 10 CU です。スケジュールチューニングの設定は次のとおりです。
スケジュールされたチューニング設定パネル [朝のピークと夜のピーク] には、[ジョブマネージャー] の CPU が 1 コア、メモリが 4 GiB、[タスクマネージャー] の CPU が 1 コア、メモリが 4 GiB、TaskManager あたりの [スロット数] が 4、[システムチェックポイントの間隔] が 0.1 秒、2 つのシステムチェックポイント間の [最小間隔] が 0.1 秒、[状態データ有効期限] が 0 時間、[Flink 再起動戦略] が failure-rate という、同じリソースパラメーターを持つ 2 つのルールが含まれています。
次のステップ
-
インテリジェントデプロイメント診断機能を使用して、デプロイメントの健全性を監視し、ビジネスの安定性を確保してください。詳細については、「インテリジェントジョブ診断の実行」をご参照ください。
-
デプロイメント設定とクエリ最適化を通じて、Flink SQL デプロイメントのパフォーマンスを向上させてください。詳細については、「Flink SQL の最適化」をご参照ください。