Flink ジョブは、インテリジェントチューニングとスケジュールチューニングの 2 つの自動チューニングモードをサポートしています。このトピックでは、両方のモードの設定方法と重要な注意事項について説明します。
背景情報
ジョブのチューニングは時間がかかる場合があります。たとえば、新しいジョブを開始する場合、リソース、並列度、TaskManager の数とサイズを設定する必要があります。ジョブの実行中も、使用率を最大化するためにジョブリソースを調整する必要があります。ジョブでバックプレッシャーが発生したり、レイテンシーが増加したりした場合は、ジョブの構成を調整する必要があります。このプロセスを簡素化するために、Realtime Compute for Apache Flink は自動チューニング機能を提供しています。以下の情報に基づいて、適切なチューニングモードを選択できます。
チューニングモード | シナリオ | メリット | リファレンス |
インテリジェントチューニング | ジョブが 30 CU を使用しています。一定期間安定して実行された後、ソースのレイテンシーやバックプレッシャーがない場合に、ジョブの CPU とメモリの使用量が非常に低くなることがあります。 手動でリソースを調整したくなく、システムに自動的にリソース調整を完了させたい場合は、インテリジェントチューニングモードを使用できます。システムは、リソース使用量が低い場合は自動的にリソース構成を削減し、リソース使用量が特定のしきい値まで上昇した場合はリソース構成を増加させます。 |
| インテリジェントチューニング機能を有効にする方法については、「インテリジェントチューニングの有効化と設定」をご参照ください。 |
スケジュールチューニング | スケジュールチューニングプランは、リソースと時点のマッピングを記述します。スケジュールチューニングプランには、リソースと時点の複数のマッピングを含めることができます。 スケジュールチューニングプランを使用する場合、各期間のリソース使用量を把握し、ビジネスのタイムウィンドウの特性に基づいて対応するリソースを設定する必要があります。 たとえば、ビジネスのピーク時間は 09:00 から 19:00 までで、オフピーク時間は 19:00 から翌日の 09:00 までです。この場合、スケジュールチューニング機能を使用して、ピーク時間帯に 30 CU、オフピーク時間帯に 10 CU を使用できます。 | スケジュールチューニングポリシーを設定する方法については、「スケジュールチューニングプランの設定と適用」をご参照ください。 |
制限事項
最大 20 個のリソースプランを作成できます。
非整列チェックポイントが有効になっている場合、並列度は調整できません。
インテリジェントチューニングは、セッションクラスターにデプロイされたジョブをサポートしていません。
自動チューニングは、YAML ジョブではまだサポートされていません。
チューニングモードは相互排他的です。別のモードを適用する前に、現在適用されているモードを停止する必要があります。
スケジュールチューニングとインテリジェントチューニングは相互排他的です。一方のモードからもう一方のモードに切り替えるには、まず現在適用されているモードを停止する必要があります。
スケジュールチューニングプランは相互排他的です。別のスケジュールチューニングプランを適用するには、まず現在適用されているプランを停止する必要があります。
注意事項
ジョブの再起動を伴うチューニングモードは、データ消費の短時間の中断を引き起こします。
説明VVR 8.0.1 以降では、Flink システムはまず動的パラメーター更新を使用してジョブを再起動しようとし、その後で完全なジョブの再起動を試みます。ジョブのステータスとロジックに応じて、動的パラメーター更新のサービスダウンタイムは、完全なジョブの再起動よりも 30% から 98% 短くなります。現在、このメソッドで変更できるのは並列度パラメーターのみです。詳細については、「動的スケーリングと動的パラメーター更新」をご参照ください。
SQL で DataStream ジョブまたはカスタムコネクタを使用する場合、ジョブコードでジョブの並列度を設定しないでください。設定すると、インテリジェントチューニングとスケジュールチューニングでジョブリソースを調整できなくなり、自動チューニング設定が有効になりません。
インテリジェントチューニングは、ストリーミングジョブのすべてのパフォーマンスボトルネックを解決できるわけではありません。
ストリーミングジョブのパフォーマンスは、上流と下流の両方のシステムによって決まります。Flink でパフォーマンスボトルネックが発生した場合、Flink リソースをチューニングすることで解決できます。ただし、チューニング戦略は、ジョブの処理モデルに関する特定の仮定に基づいています。たとえば、チューニング戦略では、トラフィックがスムーズに変化し、データスキューが存在せず、各オペレーターのスループット容量が並列度の増加に比例して線形にスケールすると仮定しています。ビジネスロジックがこれらの仮定から大幅に逸脱すると、ジョブが異常になる可能性があります。例:
並列度を変更する操作がトリガーできず、ジョブが正常な状態に達しない、またはジョブが継続的に再起動する。
ユーザー定義スカラー関数 (UDF)、ユーザー定義集計関数 (UDAF)、またはユーザー定義テーブル値関数 (UDTF) のパフォーマンス問題。
インテリジェントチューニングは、外部システムの問題を特定できません。外部システムで問題が発生した場合は、手動で解決する必要があります。
外部システムに障害が発生したり、アクセスが遅くなったりすると、ジョブの並列度が自動的に増加します。これにより、外部システムへの負荷が増加し、カスケード障害を引き起こす可能性があります。外部システムの一般的な問題は次のとおりです。
DataHub のパーティション不足、または Message Queue for Apache RocketMQ のスループット不足。
シンクのパフォーマンス問題。
ApsaraDB RDS のデッドロック。
リソースを調整する際、システムはリソース構成を比較し、調整方法を決定します。
適用するリソースプランが現在のオンライン構成と比較して CPU またはメモリの変更を伴う場合、ジョブは停止してから再起動することで調整されます。このプロセスにより、サービスのダウンタイム、データキャッチアップのレイテンシー、またはリソース不足による起動失敗が発生する可能性があります。並列度のみが変更される場合、調整は動的スケーリングパスを通じて直接行われ、サービスのダウンタイムを削減します。詳細については、「動的スケーリングと動的パラメーター更新」をご参照ください。
インテリジェントチューニングの有効化と設定
チューニング戦略
戦略 | シナリオ | メリット |
(推奨) 適応型戦略 | リソース要件の変動が大きい、レイテンシーへの感度が高い、マルチタスキング、データスキューや不均一な負荷、および長時間実行されるジョブのシナリオに適しています。 | この戦略を適用すると、システムはリアルタイムのジョブリソースとメトリック情報に基づいてリソース構成を動的に変更します。現在のジョブのレイテンシーとリソース使用量により注意を払い、関連するメトリックの変化に基づいてリソースの適応をより迅速に最適化します。これにより、システムはジョブの要件により敏感に反応し、リソース構成の効率と適応性を向上させます。 |
安定型戦略 | 定期的なタスク、スケジュールされたタスク、およびリソース要件が比較的安定しており、起動・停止コストが高く、高い安定性が要求される長時間実行シナリオに適しています。 | この戦略を適用することにより、システムは実行サイクル全体に適した固定リソースまたはスケジュールプランを見つけます。サイクル全体のジョブの動作条件に基づいてジョブリソースを調整し、起動・停止操作がジョブに与える影響を軽減します。これにより、ジョブの実行がより安定し、不要な変更や変動が減少し、最終的に収束状態に達します。 説明
|
手順
インテリジェントチューニングを有効にして設定するページに移動します。
対象のワークスペースについて、[操作] 列の [コンソール] をクリックします。
ページで、対象のジョブ名をクリックします。
[自動チューニング] タブで、[インテリジェントチューニングパターン] をクリックします。
[オートパイロット] をオンにできます。
スイッチをオンにすると、[自動チューニング] タブの上部に [インテリジェントチューニング進行中] のステータスが表示されます。インテリジェントチューニングを無効にするには、[インテリジェントチューニングをオフにする] をクリックするか、[自動チューニング] スイッチをオフにします。
[チューニング構成] の右側にある [編集] をクリックして、チューニングポリシーを選択し、インテリジェントチューニングパラメーターを変更します。
(推奨) 適応型戦略
パラメーター
説明
最大 CPU
ジョブが自動的にスケールアウトできる CPU の最大上限。デフォルト値は 64 コアです。
最大メモリ
ジョブが自動的にスケールアウトできるメモリの最大上限。デフォルト値は 256 GiB です。
[最大並列度]
自動チューニングで設定できる最大並列度。デフォルト値は 1024 です。
説明Kafka、MQ、SLS などのメッセージキュープロダクトの場合、自動チューニングの並列度の調整はパーティション数の影響を受け、この上限を超えることはできません。設定した最大並列度がパーティション数を超える場合、システムは自動的に並列度をパーティション数に調整します。
最小並列度
自動チューニングで設定できる最小並列度。デフォルト値は 1 です。
[スケールアウトポリシー]
スケールアップの条件を指定します。いずれかの条件が満たされると、スケールアップがトリガーされます。必要に応じて [無効化] をクリックして条件を無効にできます。
ジョブのレイテンシーがしきい値を超え、この状態が一定期間持続する。
単一オペレーターの平均 Busy メトリックがしきい値を超え、この状態が一定期間持続する。
単一 TaskManager (TM) のメモリ使用量がしきい値を超える。
ジョブで Out-of-Memory (OOM) エラーが発生する。
ジョブの TaskManager (TM) または JobManager (JM) の 1 秒あたりのガベージコレクション (GC) に費やされる時間の割合がしきい値を超え、この状態が一定期間持続する。
説明しきい値は、既存データまたはデフォルト値に基づいて設定できます。参照データがない場合は、比較的緩やかなしきい値から始め、一定期間の観察後に調整できます。しきい値の単位はパーセンテージで、値の範囲は 0% から 100% です。
期間は、一時的な変動をフィルターし、短期的な異常による頻繁なスケールアウトを避けるために使用されます。適切な期間は、スケールアウトの精度を向上させるのに役立ちます。必要に応じて時間単位を選択できます。
OOM エラーについては、特定の値を入力する必要はなく、ルールを有効または無効にするだけです。
[スケールインポリシー]
次のいずれかの条件が満たされると、スケールインがトリガーされます。一部のパラメーターが現在のビジネスシナリオに適用できない場合は、右側の [無効化] ボタンをクリックして無効にできます。しきい値はパーセンテージで測定され、必要に応じて時間単位を選択できます。
単一オペレーターの平均 Busy メトリックがしきい値 (パーセンテージ) 未満であり、この状態が一定期間持続する。
単一 TaskManager (TM) のメモリ使用量がしきい値未満である。
高度なルール
一部のルールはテスト段階にあり、完全には利用できません。関連する要件がある場合は、サポートまでご連絡ください。
安定型戦略
パラメーター
説明
クールダウン時間 (分)
チューニングの再起動が有効になった後、次のチューニングまでの時間間隔。デフォルト値は 10 分です。
最大 CPU
ジョブが自動的にスケールアウトできる CPU の最大上限。デフォルト値は 16 コアです。
最大メモリ
ジョブが自動的にスケールアウトできるメモリの最大上限。デフォルト値は 64 GiB です。
最大遅延
許容される最大レイテンシーのしきい値。デフォルト値は 1 分です。
その他のパラメータ設定
次のパラメーターを設定できます:
mem.scale-down.interval:メモリをスケールダウンするための最小トリガー間隔。デフォルト値は 4 時間です。4 時間以内に、検出されたメモリ使用量が設定されたしきい値を下回った場合、システムはメモリ割り当てを調整するか、リソース使用率を最適化するためにメモリ割り当てを減らすことを推奨します。
parallelism.scale.max:スケールアップ時の最大並列度の上限。デフォルト値は -1 で、最大並列度に制限がないことを示します。
説明Kafka、MQ、SLS などのメッセージキュープロダクトの場合、自動チューニングの並列度の調整はパーティション数の影響を受け、この上限を超えることはできません。設定した最大並列度がパーティション数を超える場合、システムは自動的に並列度をパーティション数に調整します。
parallelism.scale.min: スケールダウン時の並列度の下限。デフォルト値は 1 で、最小並列度が 1 であることを示します。
delay-detector.scale-up.threshold:許容される最大レイテンシーのしきい値。データソースでのレイテンシーに基づいてジョブのスループット容量を測定します。デフォルト値は 1 分です。データ処理能力が不足し、レイテンシーが 1 分を超えると、システムはスケールアップメソッドを使用してジョブのスループット容量を増やします。スケールアップメソッドには、並列度の増加、チェーンの分割、またはスケールアップの推奨が含まれます。
slot-usage-detector.scale-up.threshold:処理ノード (ソースノードを除く) の計算/IO リソースの使用率のしきい値を設定します。ノードがデータ処理に費やす時間の割合がこの値を上回り続ける場合、システムは並列度を増加させます。デフォルト値は 0.8 です。slot-usage-detector.scale-down.threshold:処理ノード (ソースノードを除く) の計算/IO リソースの使用率のしきい値を設定します。ノードがデータ処理に費やす時間の割合がこの値を下回り続ける場合、システムは並列度を減少させます。デフォルト値は 0.2 です。slot-usage-detector.scale-up.sample-interval:システムが処理ノードの使用率をサンプリングする時間間隔。システムはこの期間内の平均使用率を計算し、前の 2 つのしきい値と比較して、スケールアップまたはスケールダウンするかを決定します。デフォルト値は 3 分です。resources.memory-scale-up.max:単一の TaskManager と JobManager のメモリを調整できる最大値。デフォルト値は 16 GiB です。TM と JM に対してインテリジェントチューニングが実行されるか、並列度が増加する場合、メモリの上限は 16 GiB です。
[保存] をクリックします。
リソース調整プランの保存
[安定型戦略] を使用するジョブが安定した後、システムは自動的に固定またはスケジュールのリソースプランを生成し、それを表示、分析、保存、または適用できます。次の表に、推奨されるプランの詳細を示します。
推奨プラン | 手順 | 注意 |
固定リソース | 時間ディメンションなしで単一のリソース構成を出力します。 [詳細の表示] をクリックした後、[固定リソース] を選択し、[保存] をクリックしてから、[確認] をクリックします。 | [確認] をクリックすると、ジョブデプロイのリソース構成が保存された見積もりで更新され、次回のジョブ開始時に適用されます。 |
スケジュールプラン (パブリックプレビュー) | 期間と各期間のリソース構成を出力します。 システムによって生成されたスケジュールプランを保存して適用し続けることができます。詳細については、「スケジュールプランの保存と適用」をご参照ください。 | このスケジュールプランがインテリジェントチューニングで適用されると、チューニングモードは自動的にインテリジェントチューニングからスケジュールチューニングに変わります。ジョブが安定した後、リソースは調整されなくなります。 |
スケジュールチューニングプランの設定と適用
手順
新しいスケジュールプランの作成と適用
スケジュールチューニングを有効にして設定するページに移動します。
対象のワークスペースについて、[操作] 列の [コンソール] をクリックします。
ページで、対象のジョブ名をクリックします。
[自動チューニング] タブで、[スケジュールチューニングモード] をクリックします。
[新しいプラン] をクリックします。
[リソース構成] セクションで、必要な情報を入力します。
[トリガー期間]:[繰り返しなし]、[毎日]、[毎週]、または [毎月] を選択できます。毎週または毎月のトリガーの場合、有効な日付範囲も指定する必要があります。
[トリガー時間]:プランが有効になる時間。
[リソースモード]:利用可能なオプションは [基本モード] と [エキスパートモード] です。詳細については、「ジョブリソースの設定」をご参照ください。
[実行パラメーター]:詳細については、「実行パラメーターの設定」をご参照ください。
(オプション) [リソース構成期間の追加] をクリックして、有効時間とリソース構成を設定します。
同じスケジュールプランで複数の期間のリソースチューニングプランを設定できます。
重要同じスケジュールプラン内で、[新しいリソース構成期間] と既存のリソース構成のトリガー時間は 30 分以上離れている必要があります。そうでない場合、新しいリソース構成は保存できません。
対象のリソーススケジュールプランについて、[操作] 列の [適用] をクリックします。
スケジュールプランの保存と適用
[安定型戦略] を使用するジョブが安定すると、システムは自動的にスケジュールプランを生成し、それを表示、分析、保存、適用できます。
[自動チューニング] ページに移動します。
対象のワークスペースについて、[操作] 列の [コンソール] をクリックします。
ページで、対象のジョブをクリックします。
[自動チューニング] タブをクリックします。
[詳細] をクリックし、[推奨プラン] を [スケジュールプラン] に設定します。
スケジュールプランを設定します。
操作
説明
注意
1. 最大変更回数を設定します。
スケジュールプランで発生しうる最大変更回数を指定します。
下限は 2、上限は 5 です。
2. [期間のマージ] をクリックします。
設定した最大変更回数に基づいて期間をマージします。
マージする際には、ポリシー要件を事前に満たすためにリソースをスケールアウトするかスケールインするかを検討してください。
マージされたリソース構成を表示および変更します。構成パラメーターの詳細については、「ジョブリソースの設定」をご参照ください。
ページ左下の [保存] をクリックします。
[スケジュールプラン名] を指定するか、[このプランをすぐに適用] を選択します。その後、[確認] をクリックします。
このスケジュールプランが適用されると、チューニングモードは自動的にインテリジェントチューニングからスケジュールチューニングに変わります。ジョブが安定した後、そのリソースは調整されなくなります。
設定例
ビジネスのピーク時間は 09:00 から 19:00 までで、30 CU が必要です。オフピーク時間は 19:00 から翌日の 09:00 までで、10 CU が必要です。次の図は、このシナリオのチューニングポリシー設定を示しています。

リファレンス
インテリジェントジョブ診断サービスは、ジョブの健全性を監視し、ビジネスの安定性と信頼性を確保するのに役立ちます。詳細については、「インテリジェントジョブ診断」をご参照ください。
ジョブ構成と Flink SQL の最適化を通じて、Flink SQL ジョブのパフォーマンスを向上させることができます。詳細については、「高性能 Flink SQL 最適化テクニック」をご参照ください。