Apache フリンクステートフル関数 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。

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

Apache フリンクステートフル関数

ステートフル関数」は、分散型ステートフルアプリケーションの構築を簡素化する API です。これは、強固な一貫性が保証された状態で動的に相互作用できる永続的な状態の関数に基づいています。

ステートフルファンクションアプリケーションは基本的には単なる Apache Flink アプリケーションなので、Apache Flink 用 Managed Service にデプロイできます。ただし、Kubernetes クラスタ用と Apache Flink 用 Managed Serviceのステートフルファンクションのパッケージ化には、いくつかの違いがあります。ステートフルファンクションアプリケーションの最も重要な点は、ステートフルファンクションランタイムの設定に必要なランタイム情報がすべて「モジュール設定」に含まれていることです。通常、この設定はステートフル関数固有のコンテナにパッケージ化され、Kubernetes にデプロイされます。しかし、Apache Flink 用 Managed Serviceでは不可能です。

以下は、Apache Flink のマネージドサービス用の StateFun Python サンプルを改変したものです。

Apache Flink アプリケーションテンプレート

Stateful Functions ランタイムにカスタマーコンテナを使用する代わりに、Stateful Functions ランタイムを呼び出すだけで、必要な依存関係を含む Flink アプリケーション jar をコンパイルできます。Flink 1.13 では、必要な依存関係は次のようになります。

<dependency> <groupId>org.apache.flink</groupId> <artifactId>statefun-flink-distribution</artifactId> <version>3.1.0</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency>

また、Flink アプリケーションの Stateful Function ランタイムを呼び出す主なメソッドは以下のようになります。

public static void main(String[] args) throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); StatefulFunctionsConfig stateFunConfig = StatefulFunctionsConfig.fromEnvironment(env); stateFunConfig.setProvider((StatefulFunctionsUniverseProvider) (classLoader, statefulFunctionsConfig) -> { Modules modules = Modules.loadFromClassPath(); return modules.createStatefulFunctionsUniverse(stateFunConfig); }); StatefulFunctionsJob.main(env, stateFunConfig); }

これらのコンポーネントは汎用的で、ステートフル関数に実装されているロジックとは無関係であることに注意してください。

モジュール設定の場所

ステートフル関数モジュール構成は、ステートフル関数ランタイムで検出できるようにクラスパスに含める必要があります。Flink アプリケーションの resources フォルダーに含め、jar ファイルにパッケージ化するのが一番です。

一般的な Apache Flink アプリケーションと同様に、Maven を使用して uber jar ファイルを作成し、それを Apache Flink のマネージドサービスにデプロイできます。