All Products
Search
Document Center

Lindorm:Metode pengujian

Last Updated:Mar 29, 2026

Pengujian benchmark ini membandingkan throughput, latensi respons, dan rasio kompresi antara kluster Apache HBase dan kluster Lindorm menggunakan Yahoo Cloud Serving Benchmark (YCSB).

Alur kerja pengujian:

  1. Buat tabel di kedua kluster menggunakan skema yang sama.

  2. Muat 2 miliar baris data menggunakan YCSB.

  3. Jalankan pengujian throughput pada empat skenario dengan jumlah thread yang sama.

  4. Jalankan pengujian latensi respons pada keempat skenario yang sama dengan target OPS tetap.

  5. Jalankan pengujian rasio kompresi pada empat kombinasi kolom/ukuran.

Buat tabel

Kedua kluster menggunakan skema tabel yang sama dengan 200 partisi pre-split berdasarkan data YCSB.

Catatan

Untuk petunjuk penggunaan Lindorm Shell dalam membuat tabel, lihat Gunakan Lindorm Shell untuk terhubung ke LindormTable.

Kluster Lindorm — menggunakan encoding INDEX (algoritma eksklusif Lindorm yang diaktifkan dengan mengatur DATA_BLOCK_ENCODING ke DIFF) dan kompresi Zstandard (ZSTD):

create 'test', {NAME => 'f', DATA_BLOCK_ENCODING => 'DIFF', COMPRESSION => 'ZSTD'}, {SPLITS => (1..199).map{|i| "user#{(i * ((2**63-1)/199)).to_s.rjust(19, "0")}"} }

Kluster Apache HBase — menggunakan encoding DIFF dan kompresi SNAPPY sesuai rekomendasi Apache HBase:

create 'test', {NAME => 'f', DATA_BLOCK_ENCODING => 'DIFF', COMPRESSION => 'SNAPPY'}, {SPLITS => (1..199).map{|i| "user#{(i * ((2**63-1)/199)).to_s.rjust(19, "0")}"} }

Muat data

Setiap tabel berisi 2 miliar baris, 20 kolom per baris, dan 20 byte per kolom.

Profil YCSB:

recordcount=2000000000
operationcount=150000000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=false
fieldcount=20
fieldlength=20

readproportion=1.0
updateproportion=0.0
scanproportion=0
insertproportion=0

requestdistribution=uniform

Jalankan perintah berikut untuk memuat data:

bin/ycsb load hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -s

Pengujian throughput

Pengujian throughput menjalankan setiap skenario dengan jumlah thread yang sama di kedua kluster. Keempat skenario tersebut saling independen.

Semua skenario menggunakan maxexecutiontime=1200 (durasi eksekusi 20 menit). Untuk skenario baca, lakukan pemanasan selama 20 menit sebelum pengujian resmi; picu kompaksi mayor dan tunggu hingga selesai sebelum memulai.

Baca baris tunggal

Menyimulasikan pencarian titik (point lookup) dengan konkurensi tinggi. Membaca satu baris dalam satu waktu dari rentang kueri 10 juta baris dalam dataset 2 miliar baris. Rentang kueri (recordcount=10000000) lebih kecil daripada total dataset untuk mensimulasikan pola baca hot-spot terhadap volume data yang realistis.

ParameterNilai
Jumlah baris dalam dataset2 miliar
Rentang kueri10 juta baris
Kolom per baris20
Ukuran kolom20 byte
Utas200
Pemanasan20 menit
Pengujian resmi20 menit

Profil YCSB:

recordcount=10000000
operationcount=2000000000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=false
fieldcount=20
fieldlength=20

readproportion=1.0
updateproportion=0.0
scanproportion=0
insertproportion=0

requestdistribution=uniform

Perintah pengujian beban:

bin/ycsb run hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -p maxexecutiontime=1200

Pemindaian rentang

Menyimulasikan workload pemindaian batch. Membaca 50 baris berurutan per pemindaian dari rentang kueri 10 juta baris.

ParameterNilai
Jumlah baris dalam dataset2 miliar
Rentang kueri10 juta baris
Kolom per baris20
Ukuran kolom20 byte
Baris per pemindaian50
Threads100
Pemanasan20 menit
Pengujian resmi20 menit

Profil YCSB:

recordcount=10000000
operationcount=2000000000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=false
fieldcount=20
fieldlength=20

readproportion=0.0
updateproportion=0.0
scanproportion=1.0
insertproportion=0

requestdistribution=uniform
maxscanlength=50
Lindorm.usepagefilter=false

Perintah pengujian beban:

bin/ycsb run hbase10 -P <workload> -p table=test -threads 100 -p columnfamily=f -p maxexecutiontime=1200

Penyisipan baris tunggal

Menyimulasikan workload tulis baris tunggal dengan frekuensi tinggi. Menyisipkan satu kolom (20 byte) per operasi.

ParameterNilai
Kolom per penyisipan1
Ukuran kolom20 byte
Threads200
Durasi pengujian20 menit

Profil YCSB:

recordcount=2000000000
operationcount=100000000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=false
fieldcount=1
fieldlength=20

readproportion=0.0
updateproportion=0.0
scanproportion=0
insertproportion=1.0

requestdistribution=uniform

Perintah pengujian beban:

bin/ycsb run hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -p maxexecutiontime=1200

Penyisipan batch

Menyimulasikan workload tulis massal. Menyisipkan satu kolom (20 byte) per operasi dalam batch berisi 100 baris.

ParameterNilai
Kolom per penyisipan1
Ukuran kolom20 byte
Ukuran batch100 baris
Threads100
Durasi pengujian20 menit

Profil YCSB:

recordcount=2000000000
operationcount=10000000
workload=com.yahoo.ycsb.workloads.CoreWorkload
fieldcount=1
fieldlength=20
cyclickey=true

readallfields=false
readproportion=0
updateproportion=0
scanproportion=0
insertproportion=0.0
batchproportion=1.0
batchsize=100

requestdistribution=uniform

Perintah pengujian beban:

bin/ycsb run hbase10 -P <workload> -p table=test -threads 100 -p columnfamily=f -p maxexecutiontime=1200

Pengujian latensi respons

Pengujian latensi respons menggunakan konfigurasi workload yang sama seperti pengujian throughput, tetapi menambahkan flag -p target=<N> untuk membatasi OPS pada nilai tetap. Hal ini menjaga beban identik di kedua kluster, sehingga perbedaan latensi mencerminkan kinerja kluster, bukan variasi beban.

Baca baris tunggal

ParameterNilai
Rentang kueri10 juta baris
Kolom per baris20
Ukuran kolom20 byte
Threads200
OPS maksimum5.000
Pemanasan20 menit
Pengujian resmi20 menit

Profil YCSB: sama seperti pengujian throughput baca baris tunggal.

Perintah pengujian beban:

bin/ycsb run hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -p maxexecutiontime=1200 -p target=5000

Pemindaian rentang

ParameterNilai
Rentang kueri10 juta baris
Baris per pemindaian50
Thread100
OPS maksimum5.000
Pemanasan20 menit
Pengujian resmi20 menit

Profil YCSB: sama seperti pengujian throughput pemindaian rentang.

Perintah pengujian beban:

bin/ycsb run hbase10 -P <workload> -p table=test -threads 100 -p columnfamily=f -p maxexecutiontime=1200 -p target=5000

Penyisipan baris tunggal

ParameterNilai
Kolom per penyisipan1
Ukuran kolom20 byte
Threads200
OPS maksimum50.000
Durasi pengujian20 menit

Profil YCSB: sama seperti pengujian throughput penyisipan baris tunggal.

Perintah pengujian beban:

bin/ycsb run hbase10 -P <workload> -p table=testwrite -threads 200 -p columnfamily=f -p maxexecutiontime=1200 -p target=50000

Penyisipan batch

ParameterNilai
Kolom per penyisipan1
Ukuran kolom20 byte
Ukuran batch100 baris
Threads100
OPS maksimum2.000
Durasi pengujian20 menit

Profil YCSB: sama seperti pengujian throughput penyisipan batch.

Perintah pengujian beban:

bin/ycsb run hbase10 -P <workload> -p table=testwrite -threads 100 -p columnfamily=f -p maxexecutiontime=1200 -p target=2000

Pengujian rasio kompresi

Setiap pengujian rasio kompresi memuat 5 juta baris ke kedua kluster, lalu memicu flush dan kompaksi mayor. Setelah kompaksi selesai, bandingkan ukuran tabel di disk antara kedua kluster.

Jalankan prosedur ini untuk setiap konfigurasi kolom berikut:

Kolom per barisUkuran kolom (byte)
110
2010
2020
10010

Profil YCSB (ganti <fieldcount> dan <fieldlength> dengan nilai dari tabel di atas):

recordcount=5000000
operationcount=150000000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=false
fieldcount=<fieldcount>
fieldlength=<fieldlength>

readproportion=1.0

requestdistribution=uniform

Perintah muat data:

bin/ycsb load hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -s

Setelah pemuatan selesai, picu flush dan kompaksi mayor secara manual, lalu periksa ukuran tabel di kedua kluster.