All Products
Search
Document Center

Realtime Compute for Apache Flink:Dokumen putih kinerja (benchmark Nexmark)

Last Updated:May 23, 2026

Dokumen putih ini menjelaskan cara menggunakan tool pengujian benchmark Nexmark untuk mengevaluasi kinerja pemrosesan aliran Realtime Compute for Apache Flink.

Kinerja sekilas

Nexmark adalah benchmark kinerja standar industri untuk mesin pemrosesan aliran. Benchmark ini mencakup 19 kueri standar yang meliputi skenario umum seperti filtering, agregasi, join, dan window. Dokumen ini menggunakan tool pengujian Nexmark untuk melakukan evaluasi kinerja lengkap terhadap Realtime Compute for Apache Flink dengan konfigurasi 8 CU dan garis dasar 100 juta catatan input untuk setiap kueri. Hasil pengujian menunjukkan bahwa:

  • Kueri sederhana, seperti q0, q1, dan q2, mencapai RPS sebesar 4 juta hingga 6,5 juta catatan per detik.

  • Kueri agregasi dan window kompleks, seperti q4, q5, dan q16, mencapai RPS dari 150.000 hingga 630.000 catatan per detik.

Secara keseluruhan, Realtime Compute for Apache Flink memberikan kinerja Nexmark 3,24 kali lebih tinggi dibandingkan Flink open source.

Tool pengujian

Nexmark adalah suite pengujian benchmark kinerja standar untuk mesin pemrosesan aliran. Model pengujian adalah sebagai berikut:

  • Tabel sumber Nexmark: Menghasilkan data uji (event Person, Auction, dan Bid) pada TPS tertentu.

  • Transformasi: 19 kueri standar Nexmark yang mencakup skenario umum seperti filtering, transformasi, agregasi, join, dan window.

  • Tabel sink blackhole: Data ditulis ke sink blackhole untuk menghilangkan gangguan kinerja dari penyimpanan eksternal, sehingga evaluasi dapat fokus pada kemampuan pemrosesan mesin Flink itu sendiri.

Tool pengujian Nexmark yang digunakan dalam dokumen ini diimplementasikan berdasarkan OpenAPI Realtime Compute for Apache Flink. Tool ini mengotomatiskan seluruh alur kerja, termasuk pembuatan pekerjaan, penerapan, pemantauan, dan pengumpulan hasil. Anda tidak perlu menulis SQL atau membuat pekerjaan secara manual di Konsol.

Lingkungan pengujian

Pekerjaan Flink dalam pengujian ini menggunakan konfigurasi pengoptimalan berikut:

Parameter

Nilai

Deskripsi

table.exec.mini-batch.enabled

true

Mengaktifkan agregasi Mini-Batch.

table.exec.mini-batch.allow-latency

2s

Interval buffering Mini-Batch.

table.optimizer.distinct-agg.split.enabled

true

Mengaktifkan pengoptimalan split untuk agregasi Distinct.

execution.checkpointing.interval

3min

Interval checkpoint.

Prasyarat

  • Java Development Kit (JDK) 1.8.x atau versi yang lebih baru telah diinstal.

  • Anda telah mengaktifkan Realtime Compute for Apache Flink dan membuat ruang kerja. Untuk informasi selengkapnya, lihat Aktifkan Realtime Compute for Apache Flink.

  • Anda telah memperoleh ID AccessKey dan AccessKey Secret Akun Alibaba Cloud Anda.

Prosedur

Langkah 1: Unduh tool pengujian

Unduh dan ekstrak paket tool pengujian Nexmark nexmark-flink.tar.gz.

Struktur direktori setelah diekstrak adalah sebagai berikut:

nexmark-flink/
├── run_nexmark.sh          # Skrip entri pengujian
├── nexmark_env.sh          # File konfigurasi variabel lingkungan (perlu diedit)
├── bin/                    # Skrip waktu proses
├── conf/                   # Konfigurasi pekerjaan Flink
├── lib/                    # File JAR (akan diunggah ke Konsol)
└── queries-vvp/            # File SQL Kueri Nexmark

Langkah 2: Unggah JAR Nexmark

  1. Login ke Konsol Realtime Compute for Apache Flink.

  2. Klik ruang proyek target. Di bilah navigasi kiri, pilih File Management > Upload Resource.

  3. Pilih dan unggah file nexmark-flink-0.2-SNAPSHOT.jar. File tersebut berada di direktori nexmark-flink/lib dari tool pengujian.

  4. Setelah pengunggahan selesai, klik nama file untuk menyalin alamat OSS-nya. Anda akan memerlukan alamat ini untuk langkah konfigurasi selanjutnya. Format path file bervariasi tergantung jenis penyimpanan:

    • Penyimpanan OSS Bucket: oss://<nama OSS Bucket>/artifacts/namespaces/<nama ruang proyek>/<nama file>

      Contoh: oss://oss-test/artifacts/namespaces/flink-default/nexmark-flink-0.2-SNAPSHOT.jar
    • Penyimpanan fully managed: oss://flink-fullymanaged-<ID ruang kerja>/artifacts/namespaces/<nama ruang proyek>/<nama file>

      Contoh: oss://flink-fullymanaged-e6a123456789/artifacts/namespaces/flink-default/nexmark-flink-0.2-SNAPSHOT.jar

    Untuk melihat jenis penyimpanan ruang kerja Anda, buka Konsol manajemen Realtime Compute for Apache Flink, temukan ruang kerja target, lalu klik Details di kolom Actions.

Langkah 3: Konfigurasikan parameter waktu proses

Edit file nexmark-flink/nexmark_env.sh dan atur parameter berikut.

Parameter

Deskripsi

Contoh

END_POINT

Titik akhir untuk Realtime Compute for Apache Flink. Pilih titik akhir untuk wilayah Anda. Untuk informasi selengkapnya, lihat Endpoints.

ververica.cn-hangzhou.aliyuncs.com

AK

ID AccessKey Akun Alibaba Cloud Anda.

-

SK

AccessKey Secret Akun Alibaba Cloud Anda.

-

WORK_SPACE

ID ruang kerja Anda.

e6a123456789

NAMESPACE

Nama ruang proyek Anda.

flink-default

NEXMARK_JAR

Alamat OSS file JAR yang telah Anda unggah di Langkah 2.

oss://flink-fullymanaged-e6a123456789/artifacts/namespaces/flink-default/nexmark-flink-0.2-SNAPSHOT.jar

FLINK_VERSION

Versi mesin Flink yang akan diuji.

vvr-11.5-jdk11-flink-1.20

QUERIES

Tentukan kueri yang akan dijalankan. Pisahkan beberapa kueri dengan koma, misalnya q0 atau q1,q2,q3. Untuk menjalankan semua kueri, atur nilainya menjadi all.

all

Catatan

Menjalankan semua kueri membutuhkan waktu lama. Setiap kueri harus melewati tahapan seperti pembuatan pekerjaan, pembuatan data, dan eksekusi komputasi. Kami menyarankan Anda menjalankan satu kueri terlebih dahulu (misalnya, atur QUERIES menjadi q0) untuk memverifikasi bahwa konfigurasi lingkungan dan pengaturan parameter sudah benar sebelum menjalankan pengujian skala penuh.

Langkah 4: Jalankan pengujian

  1. Di direktori nexmark-flink, jalankan perintah berikut.

    ./run_nexmark.sh
  2. Tool pengujian secara otomatis membuat dan menjalankan pekerjaan Nexmark menggunakan OpenAPI.

  3. Setelah pengujian selesai, durasi untuk setiap kueri ditampilkan dalam milidetik. Contoh berikut menunjukkan output sampel:

    INFO  com.github.nexmark.flink.vvp.Nexmark - q0 13078
    ============================================================================
    ✓ Benchmark execution completed successfully
    ============================================================================

Hasil kinerja

Tabel berikut membandingkan kinerja Nexmark antara Flink open source (1.20.4) dan Realtime Compute for Apache Flink (vvr-11.5-jdk11-flink-1.20) pada konfigurasi 8 CU. Setiap kueri memproses input sebanyak 100 juta catatan. RPS = Jumlah catatan input ÷ Durasi.

Catatan

Data pengujian berikut dikumpulkan dalam lingkungan perangkat keras dan versi mesin tertentu. Kinerja aktual dapat bervariasi karena peningkatan perangkat keras dan pembaruan mesin. Hasil ini hanya untuk referensi.

Kueri

Flink open source di ECS

Versi: 1.20.4

Realtime Compute for Apache Flink

Versi: vvr-11.5-jdk11-flink-1.20

Durasi (ms)

RPS

Durasi (ms)

RPS

RPS vs. open source (×)

q0

58848

1.699.293

23450

4.264.392

2,51

q1

57045

1.753.002

22824

4.381.353

2,50

q2

51890

1.927.154

15224

6.568.576

3,41

q3

84986

1.176.664

21558

4.638.649

3,94

q4

553426

180.693

157117

636.468

3,52

q5

365636

273.496

357547

279.684

1,02

q7

1.257.452

79.526

333837

299.547

3,77

q8

79788

1.253.321

29939

3.340.125

2,67

q9

2.324.518

43.020

266563

375.146

8,72

q10

189985

526.357

51202

1.953.049

3,71

q11

408384

244.868

145983

685.011

2,80

q12

121554

822.680

36991

2.703.360

3,29

q14

68903

1.451.316

20012

4.997.002

3,44

q15

183709

544.339

42734

2.340.057

4,30

q16

917597

108.980

337293

296.478

2,72

q17

102847

972.318

27076

3.693.308

3,80

q18

574949

173.928

96335

1.038.044

5,97

q19

586287

170.565

95121

1.051.293

6,16

q20

1.340.638

74.591

231482

431.999

5,79

q21

127089

786.850

39693

2.519.336

3,20

q22

94830

1.054.519

31228

3.202.254

3,04

Total

2.383.209

49.695.131

9550361

15.317.480

3,24

Prosedur pengujian Flink open source

Untuk mereproduksi hasil pada Flink open source di ECS, ikuti prosedur berikut.

Persiapan lingkungan

Buat kluster Flink menggunakan EMR di ECS dengan konfigurasi berikut:

  • Versi EMR: EMR-5.21.0

  • Spesifikasi perangkat keras: Tiga instans ecs.g6a.xlarge (4 vCPU / 16 GiB), termasuk satu node master dan dua node core.

  • Aktifkan layanan Hadoop dan HDFS.

  • Konfigurasikan login tanpa kata sandi antar semua node. Misalnya, unggah file kunci privat Anda (seperti key.pem) ke node master. Lalu, tambahkan konfigurasi berikut ke file ~/.ssh/config di node master. Ganti alamat IP dan path file dengan nilai aktual Anda.

    Host 192.168.0.0
        HostName 192.168.0.0
        User root
        IdentityFile /path/to/key.pem
        StrictHostKeyChecking no
    Host 192.168.0.1
        HostName 192.168.0.1
        User root
        IdentityFile /path/to/key.pem
        StrictHostKeyChecking no
    Host 192.168.0.2
        HostName 192.168.0.2
        User root
        IdentityFile /path/to/key.pem
        StrictHostKeyChecking no
    Gunakan ssh untuk memverifikasi bahwa login tanpa kata sandi antar node berfungsi dengan baik. Jika muncul error "bad permissions", jalankan chmod 600 /path/to/key.pem untuk memperbaiki izin.

Persiapan perangkat lunak

  1. Unduh paket Flink target (Apache Flink Downloads) dan paket pengujian Nexmark (nexmark-flink.tgz). Unggah paket ke node master dan ekstrak.

    tar -zxvf flink-1.20.4-bin-scala_2.12.tgz
    tar -zxvf nexmark-flink.tgz
    mv flink-1.20.4 flink
    mv nexmark-flink nexmark
  1. Salin file JAR di direktori nexmark/lib ke flink/lib. File JAR ini berisi generator data Nexmark.

    cp nexmark/lib/* flink/lib/
  1. Atur variabel lingkungan. Edit ~/.bashrc, tambahkan konfigurasi berikut, lalu jalankan source ~/.bashrc agar perubahan berlaku.

    Konfigurasikan path sesuai dengan lingkungan aktual Anda.
    export JAVA_HOME=/etc/alternatives/java_sdk_11
    export PATH=$JAVA_HOME/bin:$PATH
    export FLINK_HOME=/mnt/disk1/flink
    export HADOOP_CLASSPATH=$(/opt/apps/HADOOP-COMMON/hadoop-common-current/bin/hadoop classpath)
  1. Konfigurasikan worker Flink. Pengujian ini menggunakan delapan Pengelola Tugas, ditempatkan sebagai berikut: dua di node master dan tiga di setiap node core.

    Edit flink/conf/workers, pastikan untuk mengganti alamat IP dengan nilai aktual.

    192.168.0.0
    192.168.0.0
    192.168.0.1
    192.168.0.1
    192.168.0.1
    192.168.0.2
    192.168.0.2
    192.168.0.2
  1. Ganti flink/conf/config.yaml dengan nexmark/conf/config.yaml, dan perbarui item konfigurasi berikut:

    • jobmanager.rpc.address: Alamat IP node master, misalnya 192.168.0.0.

    • state.checkpoints.dir: Path HDFS, misalnya hdfs:///checkpoints

    • taskmanager.memory.process.size: 4G

  1. Edit nexmark/conf/nexmark.yaml dan atur nexmark.metric.reporter.host ke alamat IP node master.

  2. Sebarkan direktori flink dan nexmark serta konfigurasi variabel lingkungan ke setiap node core.

    Ganti alamat IP dengan nilai aktual Anda.
    scp -r flink 192.168.0.1:/mnt/disk1/
    scp -r flink 192.168.0.2:/mnt/disk1/
    scp -r nexmark 192.168.0.1:/mnt/disk1/
    scp -r nexmark 192.168.0.2:/mnt/disk1/
    scp ~/.bashrc 192.168.0.1:~/
    scp ~/.bashrc 192.168.0.2:~/

    Setelah distribusi selesai, jalankan source ~/.bashrc di setiap node core agar variabel lingkungan berlaku.

  1. Di node master, mulai kluster Flink.

    flink/bin/start-cluster.sh
  1. Inisialisasi lingkungan pengujian Nexmark. Skrip ini mengonfigurasi Metric Reporter yang diperlukan di setiap node.

    nexmark/bin/setup_cluster.sh

Atur batas sumber daya

Setelah kluster Flink dimulai, Anda harus menggunakan cgroups untuk membatasi penggunaan CPU setiap proses Pengelola Tugas hingga 75%. Hal ini mencegah Pengelola Tugas kehilangan koneksi akibat timeout heartbeat yang disebabkan oleh konflik sumber daya.

Jalankan perintah berikut di semua node tempat Pengelola Tugas berjalan, termasuk node master:

yum install -y libcgroup libcgroup-tools
cgcreate -t root:root -a root:root -g cpu,memory:mygroup
echo 100000 > /sys/fs/cgroup/cpu/mygroup/cpu.cfs_period_us
echo 300000 > /sys/fs/cgroup/cpu/mygroup/cpu.cfs_quota_us
echo $((12 * 1024 * 1024 * 1024)) > /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
jps | grep TaskManagerRunner | awk '{print $1}' | xargs cgclassify -g cpu,memory:mygroup

Di sini, cpu.cfs_quota_us / cpu.cfs_period_us = 300000 / 100000 = 3, artinya cgroup dapat menggunakan maksimal 3 core CPU (75% dari 4 vCPU).

Catatan

Di lingkungan fully managed Realtime Compute for Apache Flink, Anda tidak perlu mengatur batas penggunaan sumber daya secara manual. Layanan ini sepenuhnya memanfaatkan sumber daya komputasi yang telah Anda beli.

Jalankan Nexmark

Di node master, jalankan perintah berikut dan tunggu hingga selesai untuk melihat hasilnya:

nexmark/bin/run_query.sh q0,q1,q2,q3,q4,q5,q7,q8,q9,q10,q11,q12,q14,q15,q16,q17,q18,q19,q20,q21,q22