Flink は現在最も活発なストリーム処理エンジンの 1 つであり、バージョン更新が比較的頻繁に行われています。ジョブを新しいバージョンにアップグレードすることで、新機能や新しい能力を利用できます。このトピックでは、Realtime Compute for Apache Flink ジョブのエンジンバージョンをアップグレードする方法について説明します。
重要な注意事項
新しいエンジンバージョンをリリースする前に、Realtime Compute for Apache Flink は広範な互換性テストを実行します。一般的に、同一メジャーバージョン内のマイナーバージョン間のアップグレードは互換性があります。メジャーバージョンをまたぐアップグレードについては、互換性が保証されません。Flink バージョン間のエンジンバージョンおよび Savepoint の互換性の詳細については、「エンジンバージョン番号とその意味」および「互換性表」を参照してください。
ジョブのバージョンを切り替える際は、以下の点にご注意ください。
-
マイナーバージョンのアップグレード中はステートに互換性があります。バージョン切り替え前に作成されたシステムチェックポイントまたはジョブスナップショットを使用できます。たとえば、vvr-4.0.15-flink-1.13 から vvr-4.0.18-flink-1.13 への切り替えが該当します。
-
メジャーバージョンの切り替え中はステートに互換性がありません。ステートレスモードでジョブを再起動する必要があります。たとえば、vvr-4.0.15-flink-1.13 から vvr-6.0.2-flink-1.15 への切り替えが該当します。
-
SQL または DataStream ジョブ内の Flink 関連の依存関係バージョンは、ジョブ用に選択した Flink バージョンと一致している必要があります。
-
Flink 1.13.0 以降、コミュニティは Alibaba が貢献した BlinkPlanner をデフォルトの SQL Planner として採用しました。これにより、以前のバージョンといくつかの違いが生じています。詳細については、「Apache Flink 1.13.0 リリースアナウンス」を参照してください。したがって、Realtime Compute for Apache Flink で 1.13.0 より前のコミュニティ Flink バージョンから VVR 4.0 (Flink 1.13.0 ベース) 以降に移行する場合、構文および API の非互換性に遭遇する可能性があります。
アップグレード手順
ステップ 1: ジョブのバックアップと新規ジョブのデプロイ
ジョブの安定性を確保するため、既存のジョブをクローンして同一の新規ジョブを作成し、その新規ジョブでエンジンバージョンをアップグレードします。
SQL
-
Realtime Compute コンソールにログインします。対象ワークスペースの操作列でコンソールをクリックします。
-
新しいジョブを新しいエンジンバージョンに切り替えます。
新しいバージョンを使用する場合は、STABLE または RECOMMENDED バージョンを選択してください。これらのバージョンでは、他のバージョンの既知のバグや問題が修正されており、最新の機能が提供され、より高い安定性が保証されます。
-
新しいジョブエディターの右側にある 設定 をクリックします。エンジンバージョン を切り替え、右上隅の デプロイ をクリックします。
-
ページで、対象のジョブ名をクリックします。設定 タブの 基本 セクションで、デプロイされたジョブのバージョンが正常に切り替わったことを確認します。
エンジンバージョン フィールドを確認し、ターゲットバージョン (例:
vvr-8.0.9-flink-1.17) が表示されていることを確認します。
-
DataStream
-
デプロイ をクリックします。
ステップ 2: ジョブステートのバックアップ
ページで、対象のジョブをクリックします。ジョブ詳細の ステート タブで、ジョブステートセットを表示します。詳細については、「ステート生成概要の表示」を参照してください。
-
ジョブがステートフル計算を実行する場合、アップグレード中にステートを再利用できるかどうかを検討してください。
アップグレード前に、ジョブのスナップショットを手動で作成しておくと、問題が発生した場合にすばやくロールバックできます。手順については、「ジョブスナップショットの手動作成」を参照してください。
重要-
一般的に、同一メジャーバージョン内のマイナーバージョン間のアップグレードには互換性があります。メジャーバージョンをまたぐアップグレードについては、互換性は保証されません。互換性がある場合、新しいエンジンバージョンは古いバージョンで生成されたスナップショットを読み取ることができますが、その逆は必ずしも成り立ちません。
-
VVR 6.x 以降、システムはネイティブと標準の 2 つのスナップショット形式をサポートしています。ネイティブ形式は生成速度が速く、標準形式は互換性に優れています。同一メジャーバージョン内でより高いマイナーバージョンにアップグレードする場合は、ネイティブ形式を使用してください。より高いメジャーバージョンにアップグレードする場合は、標準形式を使用してください。
-
-
ジョブがステートレスである場合は、次の手順に進んでください。
(オプション) 手順 3: 元のジョブを停止する
ページで、元のジョブの Actions 列にある Stop をクリックします。詳細については、「ジョブの停止」を参照してください。
ダウンストリームの書き込みが冪等であるか、またはビジネスが重複データを許容できる場合は、古いジョブと新しいジョブを同時に実行することを検討してください。
手順 4: 新しいジョブを開始する
-
ジョブがステートフルである場合: Stateful Start で Specific State を選択し、元のジョブから作成されたスナップショットを選択します。
-
ジョブがステートレスである場合は、Stateless を選択して新しいジョブを開始します。
起動手順の詳細については、「ジョブの開始」を参照してください。
手順 5: 本番環境の動作を監視し、元のジョブを削除する
通常、アップグレード後のジョブが正常に開始され、最初のシステムチェックポイントが完了すれば、アップグレードは暫定的に成功したとみなされます。ただし、アップグレードの完全性を確保するため、ビジネスデータの正確性を確認してください。
ジョブが正常に実行され、データが正しいことを確認したら、アップグレード前のジョブスナップショットおよびジョブを手動で削除します。スナップショットの削除手順については、「指定したジョブスナップショットの手動削除」を参照してください。
アップグレード失敗時のロールバック
アップグレード後にジョブの開始に失敗したり、不正なデータが生成されたりした場合は、直ちにジョブを停止し、アップグレード前のエンジンバージョンに戻して、アップグレード前に保存したスナップショットを使用して操作を復元してください。また、 チケットを提出して問題を報告してください。
アップグレードプロセス全体を監視できない場合は、ジョブ障害アラートを設定して、異常発生時に即時通知を受け取り、ビジネスへの影響を防いでください。手順については、「モニタリングの設定」を参照してください。