このドキュメントでは、Nexmark ベンチマークスイートを使用して、Realtime Compute for Apache Flink のストリーム処理性能を評価する方法について説明します。
性能概要
Nexmark は、ストリーム処理エンジン向けの業界標準ベンチマークスイートです。フィルタリング、集約、JOIN、ウィンドウなどの一般的なシナリオをカバーする 21 のクエリが含まれています。このドキュメントでは、Nexmark ベンチマークスイート、8 CU 構成、および1 億の入力レコードのベースラインを使用して、Realtime Compute for Apache Flink の包括的な性能評価を提示します。結果は次のとおりです。
q0、q1、q2 などのシンプルなクエリの RPS は、400 万から 650 万に達する可能性があります。
q4、q5、q16 などの複雑な集約およびウィンドウクエリの RPS は、15 万から 63 万の範囲です。
テストツール
Nexmark は、ストリーム処理エンジン向けの標準的な性能ベンチマークスイートです。テストモデルは次のとおりです。
Nexmark ソーステーブル: 指定されたレートでテストデータ (Person、Auction、Bid イベント) を生成します。
変換: フィルタリング、変換、集約、JOIN、ウィンドウなどの一般的なシナリオをカバーする 21 の標準 Nexmark クエリ。
ブラックホール結果テーブル: 外部ストレージからの性能干渉を排除するために、データをブラックホールシンクに書き込み、Flink エンジンの処理能力に評価を集中させます。
このドキュメントで使用されている Nexmark テストツールは、Realtime Compute for Apache Flink の OpenAPI 上に構築されています。ジョブ作成、デプロイメント、ランタイムモニタリング、結果収集を含む完全なワークフローを自動化します。SQL を手動で記述したり、コンソールでジョブを作成したりする必要はありません。
テスト環境
このテストの Flink ジョブでは、次の最適化構成が使用されました。
パラメーター | 値 | 説明 |
table.exec.mini-batch.enabled | true | ミニバッチ集約を有効にします。 |
table.exec.mini-batch.allow-latency | 2s | ミニバッチのバッファリング間隔。 |
table.optimizer.distinct-agg.split.enabled | true | Distinct 集約の分割最適化を有効にします。 |
execution.checkpointing.interval | 3min | チェックポイント間隔。 |
前提条件
Java Development Kit (JDK) 1.8.x 以降。
アクティブなワークスペース。詳細については、「Realtime Compute for Apache Flink のアクティブ化」をご参照ください。
ご利用の Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret。
操作手順
ステップ 1: テストツールのダウンロード
Nexmark テストツールパッケージ nexmark-flink.tar.gz をダウンロードして展開します。
展開後、ディレクトリ構造は次のとおりです。
nexmark-flink/
├── run_nexmark.sh # テストエントリスクリプト
├── nexmark_env.sh # 環境変数構成ファイル (編集が必要)
├── bin/ # ランタイムスクリプト
├── conf/ # Flink ジョブ構成
├── lib/ # JAR パッケージ (コンソールにアップロード)
└── queries-vvp/ # Nexmark クエリ SQL ファイルステップ 2: Nexmark JAR のアップロード
クリックして対象の名前空間に移動し、左側のナビゲーションバーで を選択します。
nexmark-flink-0.2-SNAPSHOT.jarファイルを選択してアップロードします。このファイルは、テストツールのnexmark-flink/libディレクトリにあります。アップロードが完了したら、ファイル名をクリックしてその OSS パスをコピーします。このパスは後のステップでパラメーターとして必要になります。ファイルパスの形式はストレージタイプによって異なります。
OSS バケットストレージ:
oss://<your-bucket-name>/artifacts/namespaces/<your-namespace>/<your-file-name>例:
oss://oss-test/artifacts/namespaces/flink-default/nexmark-flink-0.2-SNAPSHOT.jarフルマネージドストレージ:
oss://flink-fullymanaged-<your-workspace-id>/artifacts/namespaces/<your-namespace>/<your-file-name>例: oss://flink-fullymanaged-e6a123456789/artifacts/namespaces/flink-default/nexmark-flink-0.2-SNAPSHOT.jar
ワークスペースのストレージタイプを表示するには、Realtime Compute for Apache Flink コンソールに移動し、対象のワークスペースを見つけ、[アクション] 列の [詳細] をクリックします。
ステップ 3: ランタイムパラメーターの構成
nexmark-flink/nexmark_env.sh ファイルを編集し、次のパラメーターを構成します。
パラメーター | 説明 | 例 |
END_POINT | Realtime Compute for Apache Flink のサービスエンドポイント。ご利用のリージョンに基づいてエンドポイントを選択します。詳細については、「サービスエンドポイント」をご参照ください。 | ververica.cn-hangzhou.aliyuncs.com |
AK | ご利用の Alibaba Cloud アカウントの AccessKey ID。 | - |
SK | ご利用の Alibaba Cloud アカウントの AccessKey Secret。 | - |
WORK_SPACE | ご利用のワークスペース ID。 | e6a123456789 |
NAMESPACE | ご利用のワークスペースの名前空間。 | flink-default |
NE*******AR | ステップ 2 でアップロードした JAR パッケージの OSS パス。 | oss://flink-fullymanaged-e6a123456789/artifacts/namespaces/flink-default/nexmark-flink-0.2-SNAPSHOT.jar |
FLINK_VERSION | テストする Flink エンジンバージョン。 | vvr-11.6-jdk11-flink-1.20 |
QUERIES | 実行するクエリ。複数のクエリをコンマで区切ります (例: | all |
すべてのクエリを実行すると時間がかかる場合があります。各クエリには、ジョブ作成、データ生成、計算などのステージが含まれます。完全なテストスイートを実行する前に、まず単一のクエリ (例: QUERIES を q0 に設定) を実行して、環境とパラメーターが正しく構成されていることを確認することを推奨します。
ステップ 4: テストの実行
nexmark-flinkディレクトリで、次のコマンドを実行します。./run_nexmark.shテストツールは OpenAPI を使用して Nexmark ジョブを自動的に作成および実行します。
テストが完了すると、出力には各クエリの持続時間 (ミリ秒単位) が表示されます。出力例:
INFO com.github.nexmark.flink.vvp.Nexmark - q0 13078 ============================================================================ ✓ Benchmark execution completed successfully ============================================================================
性能結果
次の表は、8 CU 構成の Realtime Compute for Apache Flink における 21 の Nexmark クエリの性能結果を示しています。各クエリは 1 億の入力レコードを処理しました。RPS は、入力レコード数を持続時間で割ることによって計算されます。
次のデータは、特定のテスト環境で収集されました。実際の性能は、ハードウェアおよびエンジンアップデートによって異なる場合があります。結果は参考用です。
クエリ | 持続時間 (ミリ秒) | RPS |
q0 | 23450 | 4,264,392 |
q1 | 22824 | 4,381,353 |
q2 | 15224 | 6,568,576 |
q3 | 21558 | 4,638,649 |
q4 | 157117 | 636,468 |
q5 | 679277 | 147,215 |
q7 | 333837 | 299,547 |
q8 | 29939 | 3,340,125 |
q9 | 266563 | 375,146 |
q10 | 51202 | 1,953,049 |
q11 | 145983 | 685,011 |
q12 | 36991 | 2,703,360 |
q14 | 20012 | 4,997,002 |
q15 | 42734 | 2,340,057 |
q16 | 337293 | 296,478 |
q17 | 27076 | 3,693,308 |
q18 | 96335 | 1,038,044 |
q19 | 95121 | 1,051,293 |
q20 | 231482 | 431,999 |
q21 | 39693 | 2,519,336 |
q22 | 31228 | 3,202,254 |