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

Lindorm:テスト方法

最終更新日:Jan 21, 2025

このトピックのベンチマークテストでは、Apache HBaseクラスターとLindormクラスターのスループットと応答レイテンシを比較します。

スループットテストでは、同じ数のスレッドを使用して、Apache HBaseクラスターのスループットとLindormクラスターのスループットをテストします。応答レイテンシテストでは、同じワークロードを使用して、Apache HBaseクラスターの応答レイテンシとLindormクラスターの応答レイテンシをテストします。圧縮率テストでは、Apache HBaseクラスターとLindormクラスターに同じ量のデータを書き込んで、圧縮率をテストします。

テーブルの作成

Apache HBaseクラスターとLindormクラスターにテーブルを作成します。すべてのテストで使用されるテーブルは、同じスキーマを使用します。テーブルを作成するときは、Yahoo Cloud Serving Benchmark(YCSB)データに基づいて 200 パーティションを作成します。

説明

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

  • Lindormクラスターは、INDEXエンコーディングアルゴリズムとZstandard圧縮アルゴリズムをサポートしています。INDEXエンコーディングは、Lindorm専用の圧縮アルゴリズムです。エンコーディングアルゴリズムをDIFFに設定すると、INDEXエンコーディングアルゴリズムが使用されます。次のステートメントを実行して、テーブルを作成します。

    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 億行が含まれています。各行には 20 列が含まれています。各列のサイズは 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
            

スループットテスト

スループットテストでは、同じスレッド数に基づいて、Apache HBaseクラスターのスループットとLindormクラスターのスループットを比較します。テストには 4 つのシナリオが含まれています。シナリオは相互に独立しています。

  • 個々の行からデータを読み取る

    テーブルには 20 億行が含まれています。各行には 20 列が含まれています。各列のサイズは 20 バイトです。クエリ範囲は 1,000 万行です。上記のデータが準備された後、メジャーコンパクションを実行し、システムがメジャーコンパクションを完了するまで待ちます。 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
                        
  • 指定された範囲からデータを読み取る

    テーブルには 20 億行が含まれています。各行には 20 列が含まれています。各列のサイズは 20 バイトです。クエリ範囲は 1,000 万行です。毎回 50 行が読み取られます。上記のデータが準備された後、メジャーコンパクションを実行し、システムがメジャーコンパクションを完了するまで待ちます。 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 列を挿入します。挿入される列のサイズは 20 バイトです。 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 列を挿入します。挿入される列のサイズは 20 バイトです。各バッチは 100 行にデータを挿入します。 20 分間テストを実行します。

    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
                        

応答レイテンシテスト

応答レイテンシテストでは、同じ 1 秒あたりの操作数(OPS)に基づいて、Apache HBaseクラスターの応答レイテンシとLindormクラスターの応答レイテンシを比較します。

  • 個々の行からデータを読み取る

    テーブルには 20 億行が含まれています。各行には 20 列が含まれています。各列のサイズは 20 バイトです。クエリ範囲は 1,000 万行です。最大 OPS は 5,000 です。上記のデータが準備された後、メジャーコンパクションを実行し、システムがメジャーコンパクションを完了するまで待ちます。 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 -p target=5000
                        
  • 指定された範囲からデータを読み取る

    テーブルには 20 億行が含まれています。各行には 20 列が含まれています。各列のサイズは 20 バイトです。クエリ範囲は 1,000 万行です。毎回 50 行が読み取られます。最大 OPS は 5,000 です。上記のデータが準備された後、メジャーコンパクションを実行し、システムがメジャーコンパクションを完了するまで待ちます。 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 -p target=5000
                        
  • 個々の行にデータを挿入する

    テーブルに毎回 1 列を挿入します。挿入される列のサイズは 20 バイトです。 20 分間テストを実行します。最大 OPS は 50,000 です。

    次のコードブロックは、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=testwrite -threads 200 -p columnfamily=f -p maxexecutiontime=1200 -p target=50000
                        
  • 複数の行にデータを挿入する

    テーブルに毎回 1 列を挿入します。挿入される列のサイズは 20 バイトです。各バッチは 100 行にデータを挿入します。 20 分間テストを実行します。最大 OPS は 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=uniform
                        

    ストレステストを実行するには、次のコマンドを実行します。

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

圧縮率テスト

次の圧縮率テストはすべて同じ手順に従います。YCSBを使用してテーブルに 500 万行を挿入することにより、フラッシュとメジャーコンパクションを手動でトリガーします。データがテーブルに挿入された後、テーブルのサイズを確認します。

各行の列数

各列のサイズ

1

10

20

10

20

20

100

10

次のコードブロックは、YCSBプロファイルのワークロード構成を示しています。

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

readallfields=false
fieldcount=<Number of columns in each row>
fieldlength=<Size of each column>

readproportion=1.0

requestdistribution=uniform
            

データを挿入するには、次のコマンドを実行します。

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