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