Uji benchmark dalam topik ini membandingkan throughput dan latensi respons antara kluster Apache HBase dan kluster Lindorm.
Uji throughput menggunakan jumlah thread yang sama untuk menguji throughput kluster Apache HBase dan kluster Lindorm. Uji latensi respons menggunakan beban kerja yang sama untuk menguji latensi respons kedua kluster tersebut. Uji rasio kompresi menulis jumlah data yang sama ke dalam kluster Apache HBase dan kluster Lindorm untuk menguji rasio kompresi.
Buat tabel
Buat tabel di kluster Apache HBase dan kluster Lindorm. Semua tabel yang digunakan dalam pengujian memiliki skema yang sama. Saat membuat tabel, buat 200 partisi berdasarkan data Yahoo Cloud Serving Benchmark (YCSB).
Untuk informasi lebih lanjut tentang cara menggunakan HBase Shell untuk membuat tabel, lihat Gunakan Lindorm Shell untuk terhubung ke LindormTable.
Kluster Lindorm mendukung algoritma pengkodean INDEX dan algoritma kompresi Zstandard. Pengkodean INDEX adalah algoritma kompresi eksklusif untuk Lindorm. Jika Anda mengatur algoritma pengkodean ke DIFF, algoritma pengkodean INDEX akan digunakan. Jalankan pernyataan berikut untuk membuat tabel:
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 algoritma pengkodean DIFF dan algoritma kompresi SNAPPY yang direkomendasikan oleh Apache HBase. Jalankan pernyataan berikut untuk membuat tabel:
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")}"} }
Siapkan data
Siapkan data yang akan dibaca dari baris individu dan dari beberapa baris.
Setiap tabel berisi 2 miliar baris. Setiap baris memiliki 20 kolom dengan ukuran masing-masing kolom sebesar 20 byte.
Blok kode berikut menunjukkan 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 melakukan uji stres:
bin/ycsb load hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -s
Uji throughput
Uji throughput membandingkan throughput kluster Apache HBase dengan kluster Lindorm berdasarkan jumlah thread yang sama. Pengujian mencakup empat skenario yang independen satu sama lain.
Baca Data dari Baris Individu
Tabel berisi 2 miliar baris. Setiap baris memiliki 20 kolom dengan ukuran masing-masing kolom sebesar 20 byte. Rentang kueri adalah 10 juta baris. Setelah data disiapkan, lakukan major compaction dan tunggu hingga sistem menyelesaikannya. Jalankan uji pemanasan selama 20 menit, kemudian jalankan uji formal selama 20 menit.
Blok kode berikut menunjukkan konfigurasi workload dalam 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=uniformJalankan perintah berikut untuk melakukan uji stres:
bin/ycsb run hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -p maxexecutiontime=1200Baca Data dari Rentang Tertentu
Tabel berisi 2 miliar baris. Setiap baris memiliki 20 kolom dengan ukuran masing-masing kolom sebesar 20 byte. Rentang kueri adalah 10 juta baris. 50 baris dibaca setiap kali. Setelah data disiapkan, lakukan major compaction dan tunggu hingga sistem menyelesaikannya. Jalankan uji pemanasan selama 20 menit, kemudian jalankan uji formal selama 20 menit.
Blok kode berikut menunjukkan konfigurasi workload dalam 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=falseJalankan perintah berikut untuk melakukan uji stres:
bin/ycsb run hbase10 -P <workload> -p table=test -threads 100 -p columnfamily=f -p maxexecutiontime=1200Masukkan Data ke Baris Individu
Masukkan satu kolom ke tabel setiap kali. Ukuran kolom yang dimasukkan adalah 20 byte. Jalankan pengujian selama 20 menit.
Blok kode berikut menunjukkan konfigurasi workload dalam 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=uniformJalankan perintah berikut untuk melakukan uji stres:
bin/ycsb run hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -p maxexecutiontime=1200Masukkan Data ke Beberapa Baris
Masukkan satu kolom ke tabel setiap kali. Ukuran kolom yang dimasukkan adalah 20 byte. Setiap batch memasukkan data ke 100 baris. Jalankan pengujian selama 20 menit.
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=uniformJalankan perintah berikut untuk melakukan uji stres:
bin/ycsb run hbase10 -P <workload> -p table=test -threads 100 -p columnfamily=f -p maxexecutiontime=1200
Uji latensi respons
Uji latensi respons membandingkan latensi respons kluster Apache HBase dengan kluster Lindorm berdasarkan Operations per Second (OPS) yang sama.
Baca Data dari Baris Individu
Tabel berisi 2 miliar baris. Setiap baris memiliki 20 kolom dengan ukuran masing-masing kolom sebesar 20 byte. Rentang kueri adalah 10 juta baris. OPS maksimum adalah 5.000. Setelah data disiapkan, lakukan major compaction dan tunggu hingga sistem menyelesaikannya. Jalankan uji pemanasan selama 20 menit, kemudian jalankan uji formal selama 20 menit.
Blok kode berikut menunjukkan konfigurasi workload dalam 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=uniformJalankan perintah berikut untuk melakukan uji stres:
bin/ycsb run hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -p maxexecutiontime=1200 -p target=5000Baca Data dari Rentang Tertentu
Tabel berisi 2 miliar baris. Setiap baris memiliki 20 kolom dengan ukuran masing-masing kolom sebesar 20 byte. Rentang kueri adalah 10 juta baris. 50 baris dibaca setiap kali. OPS maksimum adalah 5.000. Setelah data disiapkan, lakukan major compaction dan tunggu hingga sistem menyelesaikannya. Jalankan uji pemanasan selama 20 menit, kemudian jalankan uji formal selama 20 menit.
Blok kode berikut menunjukkan konfigurasi workload dalam 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=falseJalankan perintah berikut untuk melakukan uji stres:
bin/ycsb run hbase10 -P <workload> -p table=test -threads 100 -p columnfamily=f -p maxexecutiontime=1200 -p target=5000Masukkan Data ke Baris Individu
Masukkan satu kolom ke tabel setiap kali. Ukuran kolom yang dimasukkan adalah 20 byte. Jalankan pengujian selama 20 menit. OPS maksimum adalah 50.000.
Blok kode berikut menunjukkan konfigurasi workload dalam 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=uniformJalankan perintah berikut untuk melakukan uji stres:
bin/ycsb run hbase10 -P <workload> -p table=testwrite -threads 200 -p columnfamily=f -p maxexecutiontime=1200 -p target=50000Masukkan Data ke Beberapa Baris
Masukkan satu kolom ke tabel setiap kali. Ukuran kolom yang dimasukkan adalah 20 byte. Setiap batch memasukkan data ke 100 baris. Jalankan pengujian selama 20 menit. OPS maksimum adalah 2.000.
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=uniformJalankan perintah berikut untuk melakukan uji stres:
bin/ycsb run hbase10 -P <workload> -p table=testwrite -threads 100 -p columnfamily=f -p maxexecutiontime=1200 -p target=2000
Uji rasio kompresi
Semua uji rasio kompresi berikut mengikuti prosedur yang sama. Pemicu flush dan major compaction secara manual dengan menggunakan YCSB untuk menyisipkan 5 juta baris ke tabel. Setelah data dimasukkan ke tabel, periksa ukuran tabel.
Jumlah kolom dalam setiap baris | Ukuran setiap kolom |
1 | 10 |
20 | 10 |
20 | 20 |
100 | 10 |
Blok kode berikut menunjukkan konfigurasi workload dalam profil YCSB:
recordcount=5000000
operationcount=150000000
workload=com.yahoo.ycsb.workloads.CoreWorkload
readallfields=false
fieldcount=<Jumlah kolom dalam setiap baris>
fieldlength=<Ukuran setiap kolom>
readproportion=1.0
requestdistribution=uniform
Jalankan perintah berikut untuk menyisipkan data:
bin/ycsb load hbase10 -P <workload> -p table=test -threads 200 -p columnfamily=f -s