Amazon Managed Service for Apache Flink とは? - Managed Service for Apache Flink

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

Amazon Managed Service for Apache Flink とは?

Amazon Managed Service for Apache Flink を使用すると、Java、Scala、Python、SQL のいずれかを使用してストリーミングデータを処理および分析できます。このサービスにより、ストリーミングソースや静的ソースに対してコードを作成・実行し、時系列分析を行い、リアルタイムダッシュボードやメトリクスにデータを供給できます。

Apache Flink に基づくオープンソースライブラリを使用して、Managed Service for Apache Flink で任意の言語を使用してアプリケーションを構築できます。Apache Flink は、データストリームを処理するための一般的なフレームワークおよびエンジンです。

Apache Flink 用 Managed Serviceは、Apache Flink アプリケーションの基盤となるインフラストラクチャを提供します。コンピュートリソースのプロビジョニング、AZ フェイルオーバー耐性、並列計算、自動スケーリング、アプリケーションバックアップ (チェックポイントやスナップショットとして実装) などのコア機能を処理します。ハイレベルの Flink プログラミング特徴 (オペレータ、関数、ソース、シンクなど) は、Flink インフラストラクチャーを自分でホストするときと同じように使用できます。

Amazon Managed Service for Apache Flink で Flink ジョブを実行するには、2 つのオプションがあります。Managed Service for Apache Flink を利用すると、任意の IDE と Apache Flink の Datastream API や Table API を使用して Java、Scala、Python (および埋め込み SQL) で Flink アプリケーションを構築できます。Managed Service for Apache Flink Studio を利用すると、リアルタイムでデータストリームをインタラクティブにクエリでき、標準 SQL、Python、Scala を使用してストリーム処理アプリケーションを容易に構築・実行できます。

ユースケースに最適な方法を選択できます。よく分からないときは、このセクションで大まかなガイダンスを提供します。

Decision tree for selecting Flink application, Deployed Studio application, or Studio Notebook based on use case and programming experience.

Amazon Managed Service for Apache Flink と Amazon Managed Service for Apache Flink Studio のどちらを使用するかを決定する前に、ユースケースを検討する必要があります。

ストリーミング ETL や継続的アプリケーションなどのワークロードを引き受ける長時間稼働のアプリケーションを運用する場合は、Managed Service for Apache Flink の使用を検討する必要があります。これは、任意の IDE で Flink API を直接使用して Flink アプリケーションを作成できるためです。IDE を使用してローカルで開発することで、Git でのコードバージョニング、CI/CD オートメーション、ユニットテストなどのソフトウェア開発ライフサイクル (SDLC) の一般的なプロセスやツールを活用することもできます。

アドホックデータ探索に関心があり、ストリーミングデータをインタラクティブにクエリする場合、またはプライベートリアルタイムダッシュボードを作成する場合、Managed Service for Apache Flink Studio を使用すれば、わずか数クリックでこれらの目標を達成できます。SQL に精通しているユーザーは、長時間稼働しているアプリケーションを Studio から直接デプロイすることを検討できます。

注記

Studio ノートブックを長時間稼働するアプリケーションに昇格させることができます。ただし、Git でのコードバージョニングや CI/CD オートメーションなどの SDLC ツール、あるいはユニットテストなどの手法と統合する場合は、任意の IDE を使用して Managed Service for Apache Flink を使用することをお勧めします。

Managed Service for Apache Flink では、任意の IDE で Apache Flink API を使用して、Java、Python、Scala でアプリケーションを構築できます。Flink Datastream と Table API を使用してアプリケーションを構築する方法に関するガイダンスについては、ドキュメントを参照してください。Flink アプリケーションを作成する言語と、アプリケーションと運用のニーズに合わせて使用する API を選択できます。よく分からないときは、このセクションで大まかなガイダンスを提供します。

Apache Flink API には、さまざまな抽象化レベルがあり、アプリケーションの構築方法に影響を与える可能性があります。これらは表現力と柔軟性があり、一緒に使用することでアプリケーションを構築できます。1 つの Flink API のみを使用する必要はありません。Flink API の詳細については、「Apache Flink ドキュメント」を参照してください。

Flink には、Flink SQL、Table API、DataStream API、Process Function の 4 つの API 抽象化レベルが用意されています。これらは DataStream API と組み合わせて使用されます。これらはすべて Amazon Managed Service for Apache Flink でサポートされています。可能であれば、より高いレベルの抽象化から始めることをお勧めしますが、一部の Flink 機能は、Java、Python、または Scala でアプリケーションを作成できる Datastream API でのみ使用できます。以下の場合は、Datastream API の使用を検討する必要があります。

  • 状態をきめ細かく制御する必要がある

  • 外部データベースまたはエンドポイントを非同期的に呼び出す機能を活用したい (推論など)

  • カスタムタイマーを使用したい (カスタムウィンドウや遅延イベント処理の実装など)

  • 状態をリセットせずにアプリケーションのフローを変更できるようにしたい

Apache Flink APIs diagram showing abstraction levels and programming languages for different APIs.
注記

DataStream API を使用した言語の選択:

  • SQL は、選択したプログラミング言語に関係なく、任意の Flink アプリケーションに埋め込むことができます。

  • DataStream API を使用する場合、Python ではすべてのコネクタがサポートされているわけではありません。

  • 低レイテンシー/高スループットが必要な場合は、API に関係なく Java/Scala を検討する必要があります。

  • Process Functions API で非同期 IO を使用する場合は、Java を使用する必要があります。

API を選択すると、状態をリセットすることなくアプリケーションロジックを進化させる機能にも影響する可能性があります。これは、演算子に UID を設定することのできる特定の機能に依存しており、Java と Python の両方の DataStream API でのみ使用できます。詳細については、「Apache Flink ドキュメント」の「Set UUIDs For All Operators」を参照してください。

ストリーミングデータアプリケーションを始めるためのステップ

まず、ストリーミングデータを継続的に読み取って処理する Apache Flink アプリケーション用 Managed Service を作成します。次に、選択した IDE を使用してコードを書き、ライブストリーミングデータでテストします。Apache Flink 用 Managed Service で結果を送信する宛先を設定することもできます。

始める前に、以下のセクションを読んでおくことをお勧めします。

または、Managed Service for Apache Flink Studio ノートブックを作成することで、リアルタイムにデータストリームをインタラクティブにクエリし、標準 SQL、Python、Scala を利用してストリーム処理アプリケーションを容易に構築・実行できます。AWS マネジメントコンソール で数回クリックするだけで、サーバーレスノートブックを起動してデータストリームをクエリし、数秒で結果を取得できます。始める前に、以下のセクションを読んでおくことをお勧めします。