このトピックでは、2022 年 9 月 19 日にリリースされた Realtime Compute for Apache Flink バージョンの主な更新とバグ修正について説明します。
概要
Realtime Compute for Apache Flink の新しいバージョンが 2022 年 9 月 19 日に正式にリリースされました。このバージョンでは、プラットフォーム、エンジン、コネクタのパフォーマンスの最適化、バグ修正、および主要な更新が行われています。リリースされた Ververica Runtime (VVR) バージョンは、Apache Flink 1.13 用の VVR 4.0.15 と Apache Flink 1.15 用の VVR 6.0.2 です。最新バージョンの概要を以下に示します。
VVR 6.0.2 が正式にリリースされました。このバージョンは、Apache Flink 1.15 をベースにしたエンタープライズレベルの Flink エンジンの最初のリリースです。Apache Flink 1.15 では、ウィンドウテーブル値関数、CAST 関数、型システム、JSON 関数などの機能とパフォーマンスの向上が提供されています。これらの機能とパフォーマンスの向上はクラウド上で実装されています。
ステータス管理はユーザーにとって重要な関心事です。このバージョンでは、デプロイメントのチェックポイントとセーブポイントをステータスセットで一元管理できます。具体的には、セーブポイントの生成速度、サイズ、復元速度が大幅に向上し、成功率と安定性も大幅に向上しています。
デプロイメントをキャンセルするとセーブポイントが削除される設定は廃止されました。チェックポイントとセーブポイントは明確に区別されます。セーブポイントは明示的に作成および管理できます。このバージョンでは、GeminiDB エンジンの最適化によりコストも削減されます。ステータスセット管理を使用することで、オブジェクトストレージサービス (OSS) のストレージコストが年間 15 ~ 40% 削減されます。さらに、新しいバージョンでは、別のデプロイメントの指定されたセーブポイントからデプロイメントを開始および復元できます。A/B テストなどのデュアルランテストをより便利に実行できます。
リソース使用率が向上しました。リソース調整機能は、設定に基づいて指定された時間にデプロイメントのリソースを自動的に調整できるスケジュール調整ポリシーをサポートしています。サービスに明確なピーク時またはオフピーク時がある場合は、このポリシーを使用して人件費を節約できます。
デプロイメント診断機能では、新しいバージョンでヘルススコアの概念が導入されています。この機能は、すべての状態のデプロイメントの診断項目と提案を提供し、リアルタイムコンピューティングデプロイメントの運用を支援します。
データ統合に関しては、プラットフォーム側でサポートされている新しい API を使用してビジネスを統合できます。
リアルタイムのリスク管理は、Flink の主要なアプリケーションシナリオの 1 つです。複合イベント処理 (CEP) に関連する新機能は、継続的なイベント動作を目的としています。この機能はプレビューバージョンでホワイトリストユーザーに提供され、新しいバージョンの本番環境で検証されています。
このバージョンでは、すべてのユーザー向けに Flink CEP の一連の機能強化が導入されています。まず、CEP ルールのホットアップデート機能が最も期待されている機能です。この機能は、ピーク時に更新ルールに積極的に介入し、タスクの再リリースによってリスク制御ビジネスが 10 分間中断される問題をできるだけ早く解決できます。ビジネスの可用性が大幅に向上します。次に、CEP SQL 構文が強化されています。このリリースでは、新しい SQL 拡張構文を導入することで、CEP SQL の表現機能が向上しています。SQL 構文の強化により、複雑な DataStream デプロイメントを SQL デプロイメントに簡略化できます。この機能は開発効率を向上させ、データガバナンスのリネージシステムに統合できます。最後に、このバージョンでは、Flink CEP のルールを記述するためのメトリックが追加されています。
パフォーマンスの最適化に関しては、SQL ストリーミングデプロイメントで 2 つのデータストリームを結合するために使用される JOIN 演算子により、Flink エンジンはキーと値の分離機能を有効にするかどうかを自動的に推測できます。デュアルストリーム結合を含むデプロイメントのパフォーマンスが大幅に向上しています。Hive カタログでサポートされている Hive バージョンは、Hive 2.1.0-2.3.9 および Hive 3.1.0-3.1.3 に拡張されています。ユーザーは、Tablestore、Java Database Connectivity (JDBC) ソーステーブル、JDBC ディメンションテーブル、および結果テーブルからコネクタを読み取ることができます。
新機能
機能 | 説明 | 参照 |
ステータスセット管理 | ステータスセット管理は、すべてのステートフルジョブに適用されます。ステータス管理は、デプロイメントの開始と停止から切り離されています。デプロイメントをキャンセルしても、セーブポイントは削除されなくなりました。ユーザーは、スケジュールされた時間に一意の管理ページでセーブポイントを作成および削除できます。 | |
スケジュール調整 | スケジュール調整機能は、ビジネスで明確なピーク時またはオフピーク時を持つ Flink デプロイメントに適用されます。ユーザーは、コンソールでデプロイメントのカスタムタイミングポリシーを設定できます。その後、デプロイメントリソースは、指定された時間にプリセットサイズに自動的に調整されます。この機能は、データの変動の問題を解決し、人件費を節約するのに役立ちます。 | |
ヘルススコア | ヘルススコア機能は、開始中または実行中のすべてのデプロイメントに適用されます。この機能は、さまざまなエキスパートルールを使用してデプロイメントの問題を検出し、提案を提供します。この機能は、ユーザーがデプロイメントステータスをよりよく理解し、パラメーターを調整するのに役立ちます。 | |
アカウントへの権限付与プロセスの最適化 | アカウントへの権限付与プロセスが最適化されました。権限が付与されると、すべての RAM ユーザーが一覧表示され、選択できるようになります。RAM ユーザーの情報は手動で入力する必要はありません。 | |
Flink CEP | CEP は、リアルタイムデータストリームのパターンを照合する機能です。このバージョンは Flink CEP に基づいています。CEP ルールはデータベースの外部に配置できるため、動的にロードして有効にすることができます。API は DataStream API です。 | |
CEP SQL の強化 | MATCH_RECOGNIZE ステートメントを使用すると、SQL ステートメントを使用して CEP ルールを記述できます。このバージョンは、Flink CEP の MATCH_RECOGNIZE ステートメントに基づいており、指定された時間間隔内に到着しない一致イベントの出力や、notFollowedBy() を使用した緩和された非連続性などの強化された機能を提供します。 導入されたその他の新しいメトリックには、次のようなものがあります。
| |
Kafka へのデータ同期をサポートするデータベース同期 | データは、MySQL データベースの Upsert Kafka テーブルに対応する Upsert Kafka テーブルに書き込まれます。ユーザーは、MySQL シンクテーブルの代わりに Kafka シンクテーブルを使用して、複数のデプロイメントによって引き起こされる MySQL データベースの負荷を軽減できます。 | |
Hologres 結果テーブルにパーティションテーブルを定義する DDL ステートメント | Hologres シンクテーブルを作成するときに PARTITION BY がサポートされます。 | |
Hologres ディメンションテーブルで非同期リクエストを実行するためのタイムアウト期間 | asyncTimeoutMs パラメーターを指定して、データリクエストを特定の期間内に実行できるようにすることができます。 | |
Hologres テーブルを作成するときにテーブル属性を構成できます。 | 適切なテーブル属性設定を使用して、データを効率的にソートおよびクエリできます。Hologres テーブルを作成するときに、WITH 句で物理テーブルのプロパティを構成できます。 | |
MaxCompute シンクコネクタは、Binary データ型をサポートしています。 |
| |
Hive カタログは、より多くの Hive バージョンをサポートしています。 | このバージョンは、Hive 2.1.0-2.3.9 および Hive 3.1.0-3.1.3 をサポートしています。 | |
Tablestore コネクタ | Tablestore の増分ログを読み取ることができます。 | |
JDBC コネクタ | JDBC コネクタは組み込まれています。 | |
Apache RocketMQ ソーステーブルの並列度は、Message Queue for Apache RocketMQ メッセージトピックで定義されているパーティションの数よりも大きくすることができます。 | ユーザーは、消費前にトピックのパーティションの予想数に対してリソースを予約できます。 | |
Message Queue for Apache RocketMQ 結果テーブルのメッセージキーを指定できます。 | Message Queue for Apache RocketMQ メッセージのキーを指定できます。 | |
AnalyticDB for MySQL カタログ | カタログを使用して、AnalyticDB for MySQL からメタデータを読み取ることができます。AnalyticDB for MySQL テーブルを手動で登録する必要はありません。これにより、デプロイメント開発の効率が向上し、データの正確性が保証されます。 |
パフォーマンスの最適化
セーブポイントのネイティブ形式が導入されました。これにより、状態が大きいジョブで標準形式のセーブポイントが簡単にタイムアウトする問題が最適化され、デプロイメントがより安定します。次の表に、ネイティブ形式の利点を示します。
セクション
メリット
セーブポイントの作成に必要な時間
平均効率が 500 ~ 1,000% 向上し、増分状態の減少に伴って向上します。一般的なデプロイメントでは、効率が 10,000% 向上することもあります。
デプロイメントの復元に必要な時間
平均効率が約 500% 向上し、状態サイズの増加に伴って向上します。
セーブポイントのスペースオーバーヘッド
平均スペースオーバーロードが 200% 削減され、節約率は状態サイズの増加に伴って向上します。
セーブポイントのネットワークオーバーヘッド
平均ネットワークオーバーヘッドが 500 ~ 1,000% 削減され、節約率は増分状態の減少に伴って向上します。
SQL ストリーミングデプロイメントで 2 つのデータストリームを結合するために使用される JOIN 演算子により、Flink エンジンはキーと値の分離機能を有効にするかどうかを自動的に推測できます。SQL ストリーミングデプロイメントで 2 つのデータストリームを結合するために使用される JOIN 演算子は、デプロイメントの特性に基づいてキーと値の分離機能を有効にするかどうかを自動的に推測し、デュアルストリーム結合のパフォーマンスを向上させることができます。一般的なシナリオのパフォーマンステストでは、平均パフォーマンスの向上は 40% を超えています。詳細については、Flink SQL を最適化するおよびGeminiStateBackend の構成をご参照ください。
デプロイメントの起動速度が平均 15% 向上しました。
バグ修正
以下の問題が修正されました。
デプロイメントの変更時間が異常な方法で更新されていました。
特定のデプロイメントを一時停止して再起動した後、状態を判断できませんでした。
Alibaba Finance Cloud からローカルに JAR パッケージをアップロードできませんでした。
デプロイメントの実行用に構成されたリソースの総数が、[統計] ページのリソースの総数と一致していませんでした。
[ログ] ページにログオンできませんでした。
Kafka カタログを介して Upsert Kafka テーブルにアクセスしようとすると、エラーが報告されました。
複数ユーザー定義関数 (UDF) のネストされた操作に中間結果が使用されると、NullPointerException エラーが返されました。
MySQL-CDC では、異常なチャンクとメモリ不足 (OOM) が発生し、初期化データのタイムゾーンが増分データのタイムゾーンと一致していませんでした。リソースパラメーターの構成方法については、MySQL CDC ソーステーブルを作成するをご参照ください。