Amazon Managed Service for Apache Flink は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Managed Service for Apache Flink でアプリケーションスケーリングを実装する
スケーリングを実装するために、Apache Flink 用 Amazon Managed Service のタスクの並列実行とリソースの割り当てを設定できます。Apache Flink がタスクの並列インスタンスをスケジュールする方法については、Apache Flink ドキュメントの「並列実行
トピック
アプリケーション並列処理と を設定する ParallelismPerKPU
Apache Flink アプリケーション用 Managed Serviceタスク (ソースからの読み取りやオペレータの実行など) のparallel 実行は、次の「ParallelismConfiguration
」プロパティを使用して設定します。
-
Parallelism
— このプロパティを使用して、デフォルトの Apache Flink アプリケーション並列処理を設定します。すべてのオペレータ、ソース、シンクは、アプリケーションコードでオーバーライドされない限り、この並列処理で実行されます。デフォルトは1
で、最大値は256
です。 -
ParallelismPerKPU
— このプロパティを使用して、アプリケーションの Kinesis Processing Unit (KPU) ごとにスケジュールできる並列タスクの数を設定します。デフォルトは1
で、最大は8
です。ブロッキングオペレーション (I/O など) を持つアプリケーションの場合、 の値が高いほどKPUリソースがフルに活用ParallelismPerKPU
されます。
注記
の制限Parallelism
は、 KPUs の制限 (デフォルトは 64) のParallelismPerKPU
倍に等しくなります。KPUs 制限は、制限引き上げをリクエストすることで引き上げることができます。制限の引き上げをリクエストする方法については、「Service Quotas」 の 「制限の引き上げをリクエストするには」 を参照してください。
特定の演算子のタスク並列処理の設定については、Apache Flink ドキュメントの「並列処理の設定: 演算子
Kinesis 処理ユニットの割り当て
Managed Service for Apache Flink は容量を としてプロビジョニングしますKPUs。1 つの KPU で 1 vCPU と 4 GB のメモリを使用できます。KPU 割り当てるたびに、実行中のアプリケーションストレージが 50 GB も提供されます。
Managed Service for Apache Flink KPUsは、次のように、 Parallelism
および ParallelismPerKPU
プロパティを使用してアプリケーションを実行するために必要な を計算します。
Allocated KPUs for the application = Parallelism/ParallelismPerKPU
Apache Flink 用 Managed Service は、スループットや処理アクティビティの急増に応じて、アプリケーションリソースを迅速に提供します。アクティビティの急増が過ぎると、アプリケーションから徐々にリソースを削除します。リソースの自動割り当てを無効にするには、アプリケーションの並列処理を更新する で後述するように、AutoScalingEnabled
値を false
に設定します。
アプリケーションの KPUsのデフォルト制限は 64 です。制限の引き上げをリクエストする方法については、「サービス クォータ」 の 「制限の引き上げをリクエストするには」 を参照してください。
注記
オーケストレーションの目的で追加料金KPUが発生します。詳細については、「Managed Service for Apache Flink の料金
アプリケーションの並列処理を更新する
このセクションでは、アプリケーションの並列処理を設定するAPIアクションのサンプルリクエストについて説明します。API アクションでリクエストブロックを使用する方法の例と手順については、「」を参照してくださいManaged Service for Apache Flink APIのサンプルコード。
以下の「CreateApplication
」アクションのリクエスト例では、アプリケーションの作成時に並列処理を設定します。
{ "ApplicationName": "string", "RuntimeEnvironment":"FLINK-1_18", "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole", "ApplicationConfiguration": { "ApplicationCodeConfiguration":{ "CodeContent":{ "S3ContentLocation":{ "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket", "FileKey":"myflink.jar", "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345" } }, "CodeContentType":"ZIPFILE" }, "FlinkApplicationConfiguration": { "ParallelismConfiguration": { "AutoScalingEnabled": "true", "ConfigurationType": "CUSTOM", "Parallelism": 4, "ParallelismPerKPU": 4 } } } }
次の UpdateApplication
アクションのリクエスト例では、既存のアプリケーションの並列処理を設定します。
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "true", "ConfigurationTypeUpdate": "CUSTOM", "ParallelismPerKPUUpdate": 4, "ParallelismUpdate": 4 } } } }
次の UpdateApplication
アクションのリクエストの例では、既存のアプリケーションの並列処理が無効になります。
{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 4, "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "ParallelismConfigurationUpdate": { "AutoScalingEnabledUpdate": "false" } } } }
maxParallelism 考慮事項
Flink ジョブがスケーリングできる最大並列処理は、ジョブmaxParallelism
のすべての演算子の最小値によって制限されます。例えば、ソースとシンクのみの単純なジョブがあり、ソースが maxParallelism
16 で、シンクが 8 の場合、アプリケーションは並列処理 8 を超えてスケーリングすることはできません。
演算子maxParallelism
のデフォルトがどのように計算され、デフォルトを上書きするかについては、Apache Flink のドキュメンテーションで最大並列処理を設定する
基本ルールとして、 をどの演算子maxParallelism
にも定義せず、並列処理を 128 以下にしてアプリケーションを起動すると、すべての演算子maxParallelism
の は 128 になることに注意してください。
注記
ジョブの最大並列処理は、 状態を保持したままアプリケーションをスケーリングするための並列処理の上限です。
maxParallelism
既存のアプリケーションを変更した場合、アプリケーションは古い で取得した以前のスナップショットから再起動できなくなりますmaxParallelism
。アプリケーションを再起動できるのは、スナップショットなしでのみです。
アプリケーションを 128 を超える並列処理にスケールする場合は、アプリケーションmaxParallelism
に を明示的に設定する必要があります。
自動スケーリングロジックは、ジョブの最大並列処理を超える並列処理に Flink ジョブをスケーリングするのを防ぎます。
カスタム自動スケーリングまたはスケジュールされたスケーリングを使用する場合は、ジョブの最大並列処理を超えないように設定してください。
最大並列処理を超えてアプリケーションを手動でスケーリングすると、アプリケーションは起動しません。