アプリケーションのアップグレードに関する注意事項と既知の問題 - Managed Service for Apache Flink

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

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

アプリケーションのアップグレードに関する注意事項と既知の問題

ブローカーの再起動後にチェックポイント処理時の Kafka コミットが繰り返し失敗する

Apache Flink 1.15 の Apache Kafka コネクタには既知のオープンソースの問題があり、これは Kafka Client 2.8.1 のオープンソース Kafka Client に存在する重大なバグが原因です。詳細については、「Kafka Commit on checkpointing fails repeatedly after a broker restart」と「KafkaConsumer is unable to recover connection to group coordinator after commitOffsetAsync exception」を参照してください。

この問題を回避するには、Amazon Managed Service for Apache Flink で Apache Flink 1.18 以降を使用することをお勧めします。

状態の互換性に関する既知の制限事項

  • Table API を使用している場合、Apache Flink は Flink バージョン間の状態の互換性を保証しません。詳細については、Apache Flink ドキュメントの「Stateful Upgrades and Evolution」を参照してください。

  • Flink 1.6 の状態は Flink 1.18 と互換性がありません。状態付きで 1.6 から 1.18 以降にアップグレードしようとすると、API はリクエストを拒否します。1.8、1.11、1.13、1.15 にアップグレードしてスナップショットを作成し、1.18 以降にアップグレードできます。詳細については、Apache Flink ドキュメントの「Upgrading Applications and Flink Versions」を参照してください。

Flink Kinesis コネクタの既知の問題

  • Flink 1.11 以前を使用していて、拡張ファンアウト (EFO) サポート用の amazon-kinesis-connector-flink コネクタを使用している場合は、Flink 1.13 以降にステートフルアップグレードするために追加の手順を実行する必要があります。これは、コネクタのパッケージ名が変更されているためです。詳細については、amazon-kinesis-connector-flink を参照してください。

    Flink 1.11 以前の amazon-kinesis-connector-flink コネクタはパッケージ software.amazon.kinesis を使用しているのに対し、Flink 1.13 以降の Kinesis コネクタは org.apache.flink.streaming.connectors.kinesis を使用しています。移行をサポートするこのツールを使用してください。amazon-kinesis-connector-flink-state-migrator

  • FlinkKinesisProducer で Flink 1.13 以前していて、Flink 1.15 以降にアップグレードする場合は、ステートフルアップグレードするために、新しい KinesisStreamsSink ではなく Flink 1.15 以降で引き続き FlinkKinesisProducer を使用する必要があります。ただし、シンクにカスタム uid が既に設定されている場合、FlinkKinesisProducer では状態が維持されないため、KinesisStreamsSink に切り替えることができます。カスタム uid が設定されているため、Flink はこれを同じオペレーターとして扱います。

Scala で記述された Flink アプリケーション

  • Flink 1.15 以降、Apache Flink にはランタイムに Scala は含まれません。Flink 1.15 以降にアップグレードする場合は、使用する Scala のバージョンとその他の Scala の依存関係をコード JAR/zip に含める必要があります。詳細については、「Amazon Managed Service for Apache Flink for Apache Flink 1.15.2 リリース」を参照してください。

  • アプリケーションで Scala を使用していて、Flink 1.11 以前 (Scala 2.11) から Flink 1.13 (Scala 2.12) にアップグレードする場合は、コードで Scala 2.12 を使用していることを確認してください。それ以外の場合、Flink 1.13 アプリケーションは Flink 1.13 ランタイムで Scala 2.11 クラスを見つけられないことがあります。

Flink アプリケーションをダウングレードする際の考慮事項

  • Flink アプリケーションのダウングレードは可能ですが、アプリケーションが以前の Flink バージョンで実行されていた場合に限られます。ステートフルアップグレードの場合、Managed Service for Apache Flink では、ダウングレード対象と一致するバージョンまたはそれ以前のバージョンで作成されたスナップショットを使用する必要があります。

  • ランタイムを Flink 1.13 以降から Flink 1.11 以前に更新していて、アプリケーションが HashMap 状態バックエンドを使用している場合、アプリケーションは継続的に失敗します。