Managed Service for Apache Flink でアプリケーションスケーリングを実装する - Managed Service for Apache Flink

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) あたりにスケジュールできるparallel タスクの数を設定します。デフォルトは 1 で、最大は 8 です。ブロッキングオペレーション (I/O など) を行うアプリケーションでは、ParallelismPerKPU の値が大きいほど KPU リソースを最大限に活用できます。

注記

Parallelismの上限は、KPUの上限(デフォルトは64)の ParallelismPerKPU 倍です(デフォルトは64)。KPU の上限は、制限の引き上げをリクエストすることで増やすことができます。制限の引き上げをリクエストする方法については、「Service Quotas」 の 「制限の引き上げをリクエストするには」 を参照してください。

特定の演算子のタスク並列処理の設定については、Apache Flink ドキュメントの「並列処理の設定: 演算子」を参照してください。

Kinesis 処理ユニットを割り当てる

Apache Flink 用 Managed Service 1 つの KPU で 1 つの vCPU および 4 GB のメモリーが提供されます。割り当てられた KPU ごとに、50 GB の実行中のアプリケーションストレージも提供されます。

Apache Flink 用 Managed Serviceは、次のように Parallelism および ParallelismPerKPU プロパティを使用してアプリケーションの実行に必要な KPU を計算します。

Allocated KPUs for the application = Parallelism/ParallelismPerKPU

Apache Flink 用 Managed Service は、スループットや処理アクティビティの急増に応じて、アプリケーションリソースを迅速に提供します。アクティビティの急増が過ぎると、アプリケーションから徐々にリソースを削除します。リソースの自動割り当てを無効にするには、アプリケーションの並列処理を更新する で後述するように、AutoScalingEnabled 値を false に設定します。

アプリケーションの KPU のデフォルト制限は 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" } } } }

最大並列度に関する考慮事項

Flink ジョブがスケーリングできる最大並列度は、ジョブmaxParallelismのすべての演算子の最小値によって制限されます。例えば、ソースとシンクのみを持つ単純なジョブがあり、ソースの が 16 maxParallelism で、シンクの が 8 の場合、アプリケーションは並列処理の 8 を超えてスケーリングできません。

演算子maxParallelismのデフォルトの計算方法とデフォルトを上書きする方法については、「Apache Flink ドキュメンテーションでの最大並列度の設定」を参照してください。

基本的なルールとして、演算子maxParallelismに を定義せず、並列処理が 128 以下のアプリケーションを起動すると、すべての演算子maxParallelismの が 128 になることに注意してください。

注記

ジョブの最大並列処理は、 状態を保持しているアプリケーションをスケーリングするための並列処理の上限です。

maxParallelism 既存のアプリケーションを変更した場合、アプリケーションは古い で作成された以前のスナップショットから再起動できませんmaxParallelism。アプリケーションを再起動できるのは、スナップショットなしでのみです。

アプリケーションを 128 を超える並列処理にスケーリングする場合は、アプリケーションで maxParallelismを明示的に設定する必要があります。

  • Auto Scaling ロジックは、Flink ジョブをジョブの最大並列度を超える並列処理にスケーリングすることを防ぎます。

  • カスタム自動スケーリングまたはスケジュールされたスケーリングを使用する場合は、ジョブの最大並列度を超えないように設定してください。

  • 最大並列処理を超えてアプリケーションを手動でスケーリングすると、アプリケーションの起動に失敗します。