

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Managed Service for Apache Flink アプリケーションリソースを確認する
<a name="how-resources"></a>

このセクションでは、アプリケーションが使用するシステムリソースについて説明します。Apache Flink 用 Managed Serviceがどのようにリソースをプロビジョニングして使用するかを理解しておくと、パフォーマンスが高く安定した Apache Flink アプリケーション用 Managed Serviceの設計、作成、維持に役立ちます。

## Managed Service for Apache Flink アプリケーションリソース
<a name="how-resources-kda"></a>

Managed Service for Apache Flink は、Apache Flink アプリケーションをホストするための環境を作成する AWS サービスです。Apache Flink 用 Managed Serviceは、「**Kinesis プロセッシングユニット (KPU)**」と呼ばれるユニットを使用してリソースを提供します。

1 つの KPU は次のシステムリソースを表します。
+ 1つのCPUコア
+ 4 GBのメモリ(1 GBがネイティブメモリ、3 GBがヒープメモリ)
+ 50 GB のディスクスペース

KPU は、「**タスク**」と「**サブタスク**」と呼ばれる別々の実行単位でアプリケーションを実行します。サブタスクはスレッドと同等と考えることができます。

アプリケーションで使用できる KPU の数は、アプリケーションの `Parallelism` 設定をアプリケーションの `ParallelismPerKPU` 設定で割った数です。

アプリケーションの並列処理については、 [アプリケーションスケーリングを実装する](how-scaling.md) をご参照ください。

## Apache Flink アプリケーションリソース
<a name="how-resources-flink"></a>

Apache Flink 環境は、「**タスクスロット**」と呼ばれる単位を使用してアプリケーションのリソースを割り当てます。Apache Flink 用 Managed Serviceがアプリケーションにリソースを割り当てると、1 つ以上の Apache Flink タスクスロットが 1 つの KPU に割り当てられます。1 つの KPU に割り当てられるスロット数は、アプリケーションの `ParallelismPerKPU` 設定と同じです。タスクスロットの詳細については、Apache Flink ドキュメントの「[Job Scheduling](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/internals/job_scheduling/)」を参照してください。

### オペレーターの並列処理
<a name="how-resources-flink-operatorparallelism"></a>

オペレータが使用できるサブタスクの最大数を設定できます。この値は「**オペレータ並列度**」と呼ばれます。デフォルトでは、アプリケーション内の各オペレータの並列度はアプリケーションの並列度と同じです。つまり、デフォルトでは、アプリケーション内の各オペレータは、必要に応じてアプリケーションで使用可能なすべてのサブタスクを使用できます。

`setParallelism` メソッドを使用して、アプリケーション内のオペレータの並列度を設定できます。この方法を使用すると、各オペレータが一度に使用できるサブタスクの数を制御できます。

オペレーターの詳細については、Apache Flink ドキュメントの「[Operators](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/operators/overview/)」を参照してください。

### オペレーターの連鎖
<a name="how-resources-flink-operatorchaining"></a>

通常、各オペレータは別々のサブタスクを使用して実行しますが、複数のオペレータが常に順番に実行する場合、ランタイムはそれらすべてを同じタスクに割り当てることができます。このプロセスは「**オペレータチェイニング**」と呼ばれます。

複数のシーケンシャルオペレータがすべて同じデータを操作する場合、それらを 1 つのタスクにまとめることができます。そのために必要ないくつかの基準を以下に挙げます。
+ オペレータは 1 対 1 の単純な転送を行います。
+ オペレータの並列度はすべて同じです。

アプリケーションがオペレータを 1 つのサブタスクにチェーンすると、サービスがネットワーク操作を実行したり、オペレータごとにサブタスクを割り当てたりする必要がなくなるため、システムリソースを節約できます。アプリケーションがオペレータチェイニングを使用しているかどうかを確認するには、Apache Flink 用 Managed Serviceコンソールのジョブグラフを見てください。アプリケーションの各頂点は 1 つ以上のオペレータを表します。グラフには、1 つの頂点として連結されたオペレータが表示されます。