すべてのプロダクト
Search
ドキュメントセンター

Lindorm:テスト方法

最終更新日:Mar 29, 2026

本ベンチマークテストでは、Yahoo Cloud Serving Benchmark(YCSB)を用いて、Apache HBase クラスターと Lindorm クラスターのスループット、レスポンスレイテンシー、および圧縮率を比較します。

テストワークフロー:

  1. 同一のテーブルスキーマを使用して、両クラスターにテーブルを作成します。

  2. YCSB を使用して、20 億行のデータをロードします。

  3. 同一のスレッド数で、4 つのシナリオにおいてスループットテストを実行します。

  4. 固定の OPS 目標値で、同一の 4 つのシナリオにおいてレスポンスレイテンシーテストを実行します。

  5. 4 つのカラム数/サイズの組み合わせについて、圧縮率テストを実行します。

テーブルの作成

両クラスターとも、YCSB データに基づく 200 の事前分割パーティションを持つ同一のテーブルスキーマを使用します。

説明

Lindorm Shell を使用してテーブルを作成する手順については、「Lindorm Shell を使用して LindormTable に接続する」をご参照ください。

Lindorm クラスター — INDEX エンコーディング(DATA_BLOCK_ENCODINGDIFF に設定することで有効化される Lindorm 専用のアルゴリズム)および 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")}"} }

Apache HBase クラスター — Apache HBase の推奨に従い、DIFF エンコーディングおよび SNAPPY 圧縮を使用:

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")}"} }

データのロード

各テーブルには、20 億行、1 行あたり 20 カラム、1 カラムあたり 20 バイトのデータが格納されます。

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

データロードには、以下のコマンドを実行します:

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

スループットテスト

スループットテストでは、両クラスターに対して同一のスレッド数で各シナリオを実行します。4 つのシナリオは互いに独立しています。

すべてのシナリオで `maxexecutiontime=1200`(20 分間実行)を指定します。読み取りシナリオでは、正式なテストの前に 20 分間のウォームアップを実行します。また、正式テスト開始前に、マジョーコンパクションを実行し、完了を待機します。

単一行読み取り

高同時実行数のポイント検索をシミュレートします。20 億行のデータセット内の 1,000 万行のクエリ範囲から、1 行ずつ読み取ります。クエリ範囲(recordcount=10000000)は、現実的なデータ量に対するホットスポット読み取りパターンをシミュレートするために、全データセットよりも小さくなっています。

パラメーター
データセットの行数20億
クエリ範囲1,000 万行
1 行あたりのカラム数20
カラムサイズ20 バイト
スレッド200
ウォームアップ時間20 分
正式テスト20 分

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

負荷テストコマンド:

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

範囲スキャン

バッチスキャンワークロードをシミュレートします。1,000 万行のクエリ範囲から、1 回のスキャンにつき連続する 50 行を読み取ります。

パラメーター
データセットの行数20億
クエリ範囲1,000 万行
1 行あたりのカラム数20
カラムサイズ20 バイト
1 回のスキャンあたりの行数50
スレッド数100
ウォームアップ20 分
正式テスト20 分

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

負荷テストコマンド:

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

単一行挿入

高頻度の単一行書き込みワークロードをシミュレートします。1 回の操作で 1 カラム(20 バイト)を挿入します。

パラメーター
1 回の挿入あたりのカラム数1
カラムサイズ20 バイト
スレッド200
テスト持続時間20 分

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

負荷テストコマンド:

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

バッチ挿入

バルク書き込みワークロードをシミュレートします。1 回の操作で 100 行分のバッチ(1 カラム/20 バイト)を挿入します。

パラメーター
1 回の挿入あたりのカラム数1
カラムサイズ20 バイト
バッチサイズ100 行
スレッド数100
テスト持続時間20 分

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

負荷テストコマンド:

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

レスポンスレイテンシーテスト

レスポンスレイテンシーテストでは、スループットテストと同じワークロード構成を使用しますが、OPS を固定値に制限するための -p target=<N> フラグを追加します。これにより、両クラスター間でロードを同一に保つため、レイテンシーの差異はロードの変動によるものではなく、クラスターのパフォーマンスによるものとなります。

単一行読み取り

パラメーター
クエリ範囲1,000 万行
1 行あたりのカラム数20
カラムサイズ20 バイト
スレッド数200
最大 OPS5,000
ウォームアップ20 分
正式テスト20 分

YCSB プロファイル:「単一行読み取りスループットテスト」と同一です。

負荷テストコマンド:

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

範囲スキャン

パラメーター
クエリ範囲1,000 万行
1 回のスキャンあたりの行数50
スレッド数100
最大 OPS5,000
ウォームアップ20 分
正式テスト20 分

YCSB プロファイル:「範囲スキャンスループットテスト」と同一です。

負荷テストコマンド:

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

単一行挿入

パラメーター
1 回の挿入あたりのカラム数1
カラムサイズ20 バイト
スレッド数200
最大 OPS50,000
テスト持続時間20 分

YCSB プロファイル:「単一行挿入スループットテスト」と同一です。

負荷テストコマンド:

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

バッチ挿入

パラメーター
1 回の挿入あたりのカラム数1
カラムサイズ20 バイト
バッチサイズ100 行
スレッド数100
最大 OPS2,000
テスト持続時間20 分

YCSB プロファイル:「バッチ挿入スループットテスト」と同一です。

負荷テストコマンド:

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

圧縮率テスト

各圧縮率テストでは、500 万行のデータを両クラスターにロードした後、フラッシュおよびマジョーコンパクションを手動で実行します。コンパクション完了後に、両クラスターにおけるディスク上のテーブルサイズを比較します。

以下のカラム構成ごとに、このプロシージャを実行します:

1 行あたりのカラム数カラムサイズ(バイト)
110
2010
2020
10010

YCSB プロファイル(上記表の値を `<fieldcount>` および `<fieldlength>` にそれぞれ置き換えます):

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

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

readproportion=1.0

requestdistribution=uniform

データロードコマンド:

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

ロード後、手動でフラッシュおよびマジョーコンパクションを実行し、両クラスターのテーブルサイズを確認します。