View a markdown version of this page

Amazon Managed Service for Apache Flink 2.2 - Managed Service for Apache Flink

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

Amazon Managed Service for Apache Flink 2.2

Amazon Managed Service for Apache Flink が Apache Flink バージョン 2.2 をサポートするようになりました。これは、サービスの最初のメジャーバージョンアップグレードです。このページでは、Flink 2.2 で導入された機能と、Flink 1.x からのアップグレードに関する重要な考慮事項について説明します。

注記

Flink 2.2 では、慎重な計画が必要な重大な変更が導入されています。1.x からアップグレードFlink 2.2 アップグレードのステート互換性ガイドする前に、以下の重要な変更と廃止の完全なリストと を確認してください。

Amazon Managed Service for Apache Flink 2.2 では、アップグレード時に既存のアプリケーションが破損する可能性のある動作変更が導入されています。次のセクションの Flink API の変更とともに、これらを注意深く確認してください。

プログラムによる設定処理

メトリクスの削除

  • fullRestarts メトリクスは Flink 2.2 で削除されました。代わりに numRestartsメトリクスを使用します。

  • KDS コネクタの bytesRequestedPerFetchメトリクスは、Flink AWS コネクタバージョン 6.0.0 (Flink 2.2 と互換性のあるコネクタバージョンのみ) で削除されました。

  • uptime および downtimeメトリクスはどちらも Flink 2.2 で非推奨としてマークされ、間もなく削除されます。を新しいメトリクス uptimeに置き換えますrunningTimedowntimerestartingTime、、cancellingTimeおよび の 1 つ以上に置き換えますfailingTime

  • サポートされているメトリクスの完全なリストについては、「メトリクスとディメンション」ページを参照してください。

認証情報以外の IMDS 呼び出しがブロックされました

  • これらの許可されたエンドポイントは、 AWS SDK の DefaultCredentialsProvider (/latest/meta-data/iam/security-credentials/) と DefaultAwsRegionProviderChain (/latest/dynamic/instance-identity/document) によって使用され、アプリケーションの認証情報とリージョンを自動的に設定します。

  • 非認証情報 IMDS 呼び出し (EC2MetadataUtils.getInstanceId()、、EC2MetadataUtils.getInstanceType()、 などEC2MetadataUtils.getAvailabilityZone()) に依存する AWS SDK 関数を使用するアプリケーションはEC2MetadataUtils.getLocalHostName()、これらの呼び出しを試行するときに HTTP 4xx エラーを受け取ります。

  • アプリケーションがインスタンスメタデータまたは許可されたパス外のその他の情報に IMDS を使用する場合は、代わりに環境変数またはアプリケーション設定を使用するようにコードをリファクタリングします。

読み取り専用ルートファイルシステム

  • セキュリティを向上させるために、 以外の依存関係/tmpはデフォルトの flink 作業ディレクトリになります。 java.io.FileNotFoundException: /{path}/{filename} (Read-only file system)

  • ファイルシステムの依存関係は、コードから直接生成することも、依存関係に含まれるライブラリから間接的に生成することもできます。ファイルシステムの直接的な依存関係をコード/tmp/の に上書きします。ライブラリからの間接的なファイルシステムの依存関係については、ライブラリ設定の上書きを使用してファイルシステムのオペレーションを にリダイレクトします/tmp/

Managed Service for Apache Flink 2.2 で導入された重大な変更と廃止の概要を以下に示します。これらの重大な変更を導入する Apache Flink 2.0 の完全なリリースノートについては、「Apache Flink 2.0 リリースノート」を参照してください。

Flink API と言語の削除

DataSet API の削除

  • Flink 2.0 以降では、バッチ処理用のレガシー DataSet API が完全に削除されました。すべてのバッチ処理で、統合 DataStream API を使用する必要があります。

  • DataSet API を使用するアプリケーションは、アップグレードする前に DataStream API に移行する必要があります。DataSet から DataStream への変換については、「Apache Flink 移行ガイド」を参照してください。

Java 11 および Python 3.8 を削除

  • Java 11 のサポートは完全に削除されました。Java 17 はデフォルトの推奨ランタイムです。

  • Python 3.8 のサポートが削除されました。Python 3.12 がデフォルトになりました。

レガシーコネクタクラスの削除

  • レガシー SourceFunction および SinkFunctionインターフェイスは、新しい統合ソース (FLIP-27) およびシンク (FLIP-143) APIs に置き換えられました。これにより、境界付き/無制限の二元性、チェックポイントの調整の改善、よりクリーンなプログラミングモデルのサポートが向上します。

  • Kinesis Data Streams の場合は、 から KinesisStreamsSourceKinesisStreamsSink を使用しますflink-connector-aws-kinesis-streams:6.0.0-2.0

Scala API が削除されました

状態の互換性に関する考慮事項

  • バージョン 2.24 から 5.6 にアップグレードした Kryo シリアライザーは、状態互換性の問題を引き起こす可能性があります。

  • コレクション (HashMap、、HashSet) を持つ POJOs にはArrayList、状態互換性の問題がある可能性があります。

  • Avro と Protobuf のシリアル化は影響を受けません。

  • アプリケーションのリスクレベルをトリアージするための詳細な評価Flink 2.2 アップグレードのステート互換性ガイドについては、「」を参照してください。

ランタイムと言語のサポート

機能 説明 ドキュメント
Java 17 ランタイム Java 17 がデフォルトおよび推奨ランタイムになりました。Java 11 のサポートは削除されました。 Java の互換性
Python 3.12 のサポート Python 3.12 がサポートされるようになりました。Python 3.8 のサポートは削除されました。 PyFlink ドキュメント

状態管理とパフォーマンス

機能 説明 ドキュメント
RocksDB 8.10.0 RocksDB アップグレードで I/O パフォーマンスが向上しました。 状態バックエンド
シリアル化の改善 Map、List、Set 専用シリアライザー。Kryo を 2.24 から 5.6 にアップグレードしました。 タイプシリアル化

SQL およびテーブル API の機能

機能 説明 ドキュメント
バリアントデータ型 文字列解析を繰り返すことなく半構造化データ (JSON) をネイティブにサポート。 データ型
デルタ結合 各キーの最新バージョンのみを維持することで、ストリーミング結合の状態要件を減らします。カスタマー管理のインフラストラクチャ (Apache Fluss など) が必要です。 結合
StreamingMultiJoinOperator マルチウェイ結合を単一の演算子として実行し、中間マテリアライズメントを排除します。 FLIP-516
ProcessTableFunction (PTF) キーごとの状態とタイマーを使用して、SQL でステートフルでイベント駆動型のロジックを直接有効にします。 ユーザー定義関数
ML_PREDICT 関数 SQL から直接ストリーミング/バッチテーブルの登録済み ML モデルを呼び出します。ModelProvider 実装 (例: flink-model-openai) をバンドルする必要があります。ModelProvider ライブラリは Managed Service for Apache Flink によって出荷されません。 ML 予測
モデル DDL CREATE MODEL ステートメントを使用して、ML モデルをファーストクラスカタログオブジェクトとして定義します。 ステートメントの作成
ベクトル検索 Flink SQL API は、ベクトルデータベースの検索をサポートしています。現在、オープンソースのVectorSearchTableSource実装は利用できません。お客様は独自の実装を提供する必要があります。 Flink SQL

DataStream API の機能

機能 説明 ドキュメント
FLIP-27 ソース API レガシー SourceFunction に代わる新しい統合ソースインターフェイス。 [Sources] (出典)
FLIP-143 シンク API レガシー SinkFunction に代わる新しい統合シンクインターフェイス。 シンク
非同期 Python DataStream AsyncFunction を使用した Python DataStream API のノンブロッキング I/O オペレーション。 非同期 I/O

Flink 2.2 にアップグレードする場合、コネクタの依存関係を Flink 2.2 ランタイムと互換性のあるバージョンに更新する必要があります。Flink コネクタは Flink ランタイムとは独立してリリースされ、すべてのコネクタにまだ Flink 2.2 互換リリースがあるわけではありません。次の表は、Amazon Managed Service for Apache Flink でよく使用されるコネクタの可用性をまとめたものです。

Flink 2.2 のコネクタの可用性
コネクタ Flink 1.20 バージョン Flink 2.0+ バージョン 注意事項
Apache Kafka flink-connector-kafka 3.4.0-1.20 flink-connector-kafka 4.0.0-2.0 Flink 2.2 に推奨
Kinesis Data Streams (ソース) flink-connector-kinesis 5.0.0-1.20 flink-connector-aws-kinesis-streams 6.0.0-2.0 Flink 2.2 に推奨
Kinesis Data Streams (シンク) flink-connector-aws-kinesis-streams 5.1.0-1.20 flink-connector-aws-kinesis-streams 6.0.0-2.0 Flink 2.2 に推奨
Amazon Data Firehose flink-connector-aws-kinesis-firehose 5.1.0-1.20 flink-connector-aws-kinesis-firehose 6.0.0-2.0 Flink 2.0 と互換性があります
Amazon DynamoDB flink-connector-dynamodb 5.1.0-1.20 flink-connector-dynamodb 6.0.0-2.0 Flink 2.0 と互換性があります
Amazon SQS flink-connector-sqs 5.1.0-1.20 flink-connector-sqs 6.0.0-2.0 Flink 2.0 と互換性があります
FileSystem (S3、HDFS) Flink にバンドル Flink にバンドル Flink ディストリビューションに組み込まれている — 常に利用可能
JDBC flink-connector-jdbc 3.3.0-1.20 2.x 用にまだリリースされていない Flink 2.x 互換リリースは利用できません
OpenSearch flink-connector-opensearch 1.2.0-1.19 2.x 用にまだリリースされていない Flink 2.x 互換リリースは利用できません
Elasticsearch レガシーコネクタのみ 2.x 用にまだリリースされていない OpenSearch コネクタへの移行を検討する
Amazon Managed Service for Prometheus flink-connector-prometheus 1.0.0-1.20 2.x 用にまだリリースされていない Flink 2.x 互換リリースは利用できません
  • アプリケーションが Flink 2.x リリースをまだ持っていないコネクタに依存している場合は、コネクタが互換性のあるバージョンをリリースするのを待つか、代替バージョンに置き換えることができるかどうかを評価する (JDBC カタログやカスタムシンクを使用するなど) という 2 つのオプションがあります。

  • コネクタバージョンを更新するときは、アーティファクト名の変更に注意してください。一部のコネクタはメジャーバージョン間で名前が変更されました (たとえば、一部の中間バージョンflink-connector-aws-firehoseでは Firehose コネクタが から flink-connector-aws-kinesis-firehose に変更されました)。

  • ターゲットランタイムでサポートされている正確なアーティファクト名とバージョンについては、Amazon Managed Service for Apache Flink コネクタのドキュメントを必ず確認してください。

Amazon Managed Service for Apache Flink 2.2 では、以下の機能はサポートされていません。

  • マテリアライズドテーブル: 継続的に維持され、クエリ可能なテーブルスナップショット。

  • カスタムテレメトリの変更: カスタムメトリクスレポーターとテレメトリ設定。

  • ForSt State Backend: Disaggregated State Storage (オープンソースで実験的)。

  • Java 21: オープンソースでの実験サポート。 Managed Service for Apache Flink ではサポートされていません。

Amazon Managed Service for Apache Flink Studio

Amazon Managed Service for Apache Flink の Flink 2.2 は Studio アプリケーションをサポートしていません。詳細については、「Creating a Studio notebook」を参照してください。

Kinesis Connector EFO

  • コネクタ v5.0.0 および v6.0.0 で導入された EFO (拡張ファンアウト/SubscribeToShard) パスKinesisStreamsSourceで を使用するアプリケーションは、Kinesis ストリームがリシャーディングされると失敗することがあります。これはコミュニティの既知の問題です。詳細については、「FLINK-37648」を参照してください。

  • コネクタ v5.0.0 および v6.0.0 で導入された EFO (拡張ファンアウト/SubscribeToShard) パスKinesisStreamsSourceで を使用するアプリケーションは、Flink アプリケーションにバックプレッシャーがかかっている場合にデッドロックが発生し、1 つ以上の TaskManagers でのデータ処理が完全に停止KinesisStreamsSinkする可能性があります。アプリケーションを復旧するには、強制停止オペレーションとアプリケーション開始オペレーションが必要です。これは、コミュニティ内の既知の問題のサブケースです。詳細については、「FLINK-34071」を参照してください。

Amazon Managed Service for Apache Flink は、アプリケーション設定、ログ、メトリクス、タグ、および状態とバイナリに互換性がある場合はアプリケーション状態を保持するインプレースバージョンアップグレードをサポートしています。手順については、「Flink 2.2 へのアップグレード: 完全なガイド」を参照してください。

状態互換性リスクの評価とアップグレード中の互換性のない状態の処理に関するガイダンスについては、「」を参照してくださいFlink 2.2 アップグレードのステート互換性ガイド

質問や問題については、「」を参照Managed Service for Apache Flink をトラブルシューティングするするか、 AWS サポートにお問い合わせください。