全部產品
Search
文件中心

Lindorm:測試方法

更新時間:Sep 14, 2024

本次測試包括輸送量對比測試與毛刺率對比測試。

輸送量測試使用相同的線程數分別對社區版HBase和Lindorm進行對比測試,對比其輸送量。毛刺率測試使用相同的吞吐壓力分別對社區版HBase和Lindorm進行對比測試,對比其毛刺率。壓縮率測試使用相同的資料寫入社區版HBase和Lindorm進行對比測試,對比其壓縮比。

建表

在社區版HBase和Lindorm叢集中分別建表。所有case的表構造都相同,根據ycsb資料進行預分區,建表時預分200個分區。

說明

建表語句請使用HBase Shell執行,使用方法請參見通過Lindorm Shell訪問寬表引擎

  • Lindorm使用INDEX編碼(當指定編碼為DIFF時會自動升級為INDEX編碼演算法)和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")}"} }            
  • 社區版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列,value為20byte。

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
            

輸送量對比測試

輸送量測試為在固定線程數條件下,對比社區版HBase與Lindorm本的吞吐能力差異。 一共有4個測試情境,每組測試情境均獨立進行,測試情境之間沒有前後依賴關係。

  • 單行讀情境

    20億行基礎資料,每行資料20列,value為20byte,查詢區間為1000萬行。上述資料準備完成後,觸發其major_compaction並等待完成。先進行預熱測試20分鐘,再進行20分鐘的正式測試。

    ycsb的workload配置如下:

    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列,value為20byte。查詢區間為1000萬行,每次範圍讀取50行。 上述資料準備完成後,觸發其major_compaction並等待完成。 先進行預熱測試20分鐘,再進行20分鐘的正式測試。

    ycsb的workload配置如下:

    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列,value為20byte。執行20分鐘測試。

    ycsb的workload配置如下:

    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列,value為20byte,每次batch寫入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
                        

毛刺率對比測試

毛刺率對比測試為在固定OPS(Operation per second)的條件下,對比社區版HBase與Lindorm本的毛刺差別。

  • 單行讀情境

    20億行基礎資料,每行資料20列,value為20byte,查詢區間為1000萬行。 OPS限制為5000 上述資料準備完成後,觸發其major_compaction並等待完成。 先進行預熱測試20分鐘,再進行20分鐘的正式測試。

    ycsb的workload配置如下:

    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列,value為20byte,查詢區間為1000萬行,每次範圍讀取50行。 OPS限制為5000 上述資料準備完成後,觸發其major_compaction並等待完成。 先進行預熱測試20分鐘,再進行20分鐘的正式測試。

    ycsb的workload配置如下:

    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列,value為20byte。執行20分鐘測試 OPS限制為50000。

    ycsb的workload配置如下:

    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列,value為20byte,每次batch寫入100行。執行20分鐘測試: ops限制為2000。

    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萬行測試資料,手動觸發flush與major_compaction並等待完成,統計其表大小。

每行列個數

每列value大小

1

10

20

10

20

20

100

10

ycsb的workload配置如下:

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

readallfields=false
fieldcount=<每行列個數>
fieldlength=<每列value大小>

readproportion=1.0

requestdistribution=uniform
            

寫入資料命令為:

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