HBAseテスト(YCSBツールを使用)


YCSBテストHBAse
テストツールの選択
  • YCSB(Yahoo! Cloud Serving Benchmark)

  • YCSBはオープンソースの分散性能テストツールで、NoSQL製品の読み書き性能をテストするのによく使われています.YCSBは、Cassandra、MongoDB、HBAse、Redis、Infinispanなどの一般的なNoSQLデータベースおよびデータ・グリッド製品をサポートします.YCSBはインストールが簡単であるだけでなく、テストデータ型とサポートされているデータベース製品を自由に拡張することができます.
  • PE(PerformanceEvaluation)

  • ここではYCSBを使いますが、YCSBはPEに比べて少し明らかです.
  • 圧力測定の読み書き割合、スレッド数を任意に設定することができ、最後のテストレポートも比較的詳細
  • である.
  • YCSBのテストデータの報告を通じて比較的に説得力があって、完備しています.

  • YCSBツール使用
    圧力テストを実行するには6ステップが必要です.
  • テストが必要なデータベースを構成する
  • 適切なデータベースインタフェース層
  • を選択する.
  • 適切なworkload
  • を選択
  • 適切な運転時パラメータ
  • を選択する.
  • ロードデータ
  • 実行テスト(transaction phase)
  • YCSBパッケージのダウンロード
    YCSB githubネットワークにログインし、ダウンロードアドレスを見つけます.ここでは最新版0.15を選択し、hbase 12のバージョンをドロップダウンします.全体をダウンロードする必要はありません.大きすぎます.
    テストが必要なデータベースの構成
    ここで推奨されるプリディビジョンの数は10*RegionServerです.
    hbase(main):001:0> n_splits = 12 # HBase recommends (10 * number of regionservers)
    hbase(main):002:0> create 'usertable', 'cf', {SPLITS => (1..n_splits).map {|i| "user#{1000+i*(9999-1000)/n_splits}"}}

    適切なデータベース・インタフェース・レイヤの選択./bin/ycsb shell hbase12 -cp /etc/hbase/conf/ -p columnfamily=Aを使用して、HBAseデータベース・インタフェース・レイヤの構成が正しいかどうかをテストします.
    Connectedがあれば正常だと思います.
    接続後、insert、delete、updateの動作ができます.
            
    
    insert key name=ljkteset
    insert key age=18

    対応するhbaseテーブルの表示
    hbase(main):002:0> scan 'usertable'
    ROW                               COLUMN+CELL                                                                                    
     key                              column=A:age, timestamp=1555485313733, value=18                                                
     key                              column=A:name, timestamp=1555485171128, value=ljktest                                          
    1 row(s) in 0.1190 seconds

    適切なワークロードを選択
    Workloadは、2つのセクションを含むテストデータをデータベースにロードする方法を定義します.
  • Workload Javaクラス(com.yahoo.ycsb.Workloadのサブクラス)
  • プロファイル(Java Properties形式)
  • YCSBのCoreWorkloadには、6つの異なるタイプを含む標準的なテストデータがプリセットされています.
  • Workload A:再更新、50%読み書き、例えばsession sotre
  • Workload B:読み書きが少なく、95%読み5%書き、例えばphoto tagging
  • Workload C:読み取り専用:100%読み取り、例えばuser profile cache
  • Workload D:最近の更新を読む:このworkloadは新しいレコードを挿入し、新しいレコードほど読み取り確率が高くなります.たとえば、user status updates
  • Workload E:小規模クエリー:このworkloadは単一レコードではなく小規模レコードをクエリーします.たとえば、threaded conversations
  • Workload F:読み込み-修正-書き込み:このworkloadはレコードを読み込み、このレコードを修正し、最後に書き込みます.たとえば、user database
  • テストのニーズに応じて適切なworkloadを選択したり、新しいworkloadを作成したりすることができます.
    適切なランタイムパラメータの選択
    YCSBは、workloadでパラメータを構成するほか、これらのランタイムパラメータもサポートします.
  • threads:クライアントスレッド数、デフォルトは1
  • target:1秒あたりのターゲット操作数、デフォルトは無制限(できるだけ早く操作を完了)です.例えば、1つの動作に100 msが必要である場合、1つのスレッド1 s内で10個の動作を完了することができ、-targetパラメータによって動作を遅らせることができ、10個以下の
  • に制御することができる.
  • s:クライアントステータスを10 sごとに印刷し、
  • をデバッグします.
    データのマウント
    Workloadには、マウント・フェーズとトランザクション・フェーズの2つのフェーズがあります.マウント・フェーズでテスト・データをデータベースに挿入します.HBAseテストでは、次のコマンドを使用してデータbin/ycsb load hbase12 -P workloads/workloada -p columnfamily=A -threads 2 -s -cp /etc/hbase/conf/をロードできます.
    ここでは、デフォルトのAタイプスキームを使用します.デフォルトは1000レコード数と1000操作数です.-p recordcount=10000-p operationcount=10000を使用して、既存のプロパティを上書きできます.
    出力結果:
    2019-04-17 15:48:16:137 3 sec: 1000 operations; 297.09 current ops/sec; [CLEANUP: Count=4, Max=28223, Min=4, Avg=7103, 90=28223, 99=28223, 99.9=28223, 99.99=28223] [INSERT: Count=1000, Max=174847, Min=1001, Avg=2787.16, 90=4787, 99=13831, 99.9=172031, 99.99=174847] 
    [OVERALL], RunTime(ms), 3375
    [OVERALL], Throughput(ops/sec), 296.2962962962963
    [TOTAL_GCS_PS_Scavenge], Count, 4
    [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 43
    [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 1.274074074074074
    [TOTAL_GCS_PS_MarkSweep], Count, 1
    [TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 21
    [TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.6222222222222222
    [TOTAL_GCs], Count, 5
    [TOTAL_GC_TIME], Time(ms), 64
    [TOTAL_GC_TIME_%], Time(%), 1.8962962962962964
    [CLEANUP], Operations, 4
    [CLEANUP], AverageLatency(us), 7103.0
    [CLEANUP], MinLatency(us), 4
    [CLEANUP], MaxLatency(us), 28223
    [CLEANUP], 95thPercentileLatency(us), 28223
    [CLEANUP], 99thPercentileLatency(us), 28223
    [INSERT], Operations, 1000
    [INSERT], AverageLatency(us), 2787.16
    [INSERT], MinLatency(us), 1001
    [INSERT], MaxLatency(us), 174847
    [INSERT], 95thPercentileLatency(us), 6903
    [INSERT], 99thPercentileLatency(us), 13831
    [INSERT], Return=OK, 1000

    テストの実行
    テストデータのマウントが完了すると、workloadテストを実行できます.HBAseテストコマンドでは、テストプロセス全体が終了します.bin/ycsb run hbase12 -P workloads/workloada -p columnfamily=A -threads 2 -s -cp /etc/hbase/conf/
    出力結果:
    2019-04-17 15:51:57:708 1 sec: 1000 operations; 630.12 current ops/sec; [READ: Count=521, Max=14135, Min=734, Avg=1153.72, 90=1318, 99=5831, 99.9=10695, 99.99=14135] [CLEANUP: Count=4, Max=22991, Min=4, Avg=5784, 90=22991, 99=22991, 99.9=22991, 99.99=22991] [UPDATE: Count=479, Max=140543, Min=770, Avg=1908.56, 90=1724, 99=6067, 99.9=140543, 99.99=140543] 
    [OVERALL], RunTime(ms), 1587
    [OVERALL], Throughput(ops/sec), 630.119722747322
    [TOTAL_GCS_PS_Scavenge], Count, 4
    [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 21
    [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 1.3232514177693762
    [TOTAL_GCS_PS_MarkSweep], Count, 1
    [TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 25
    [TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 1.5752993068683048
    [TOTAL_GCs], Count, 5
    [TOTAL_GC_TIME], Time(ms), 46
    [TOTAL_GC_TIME_%], Time(%), 2.898550724637681
    [READ], Operations, 521
    [READ], AverageLatency(us), 1153.7178502879078
    [READ], MinLatency(us), 734
    [READ], MaxLatency(us), 14135
    [READ], 95thPercentileLatency(us), 1638
    [READ], 99thPercentileLatency(us), 5831
    [READ], Return=OK, 521
    [CLEANUP], Operations, 4
    [CLEANUP], AverageLatency(us), 5784.0
    [CLEANUP], MinLatency(us), 4
    [CLEANUP], MaxLatency(us), 22991
    [CLEANUP], 95thPercentileLatency(us), 22991
    [CLEANUP], 99thPercentileLatency(us), 22991
    [UPDATE], Operations, 479
    [UPDATE], AverageLatency(us), 1908.561586638831
    [UPDATE], MinLatency(us), 770
    [UPDATE], MaxLatency(us), 140543
    [UPDATE], 95thPercentileLatency(us), 3023
    [UPDATE], 99thPercentileLatency(us), 6067
    [UPDATE], Return=OK, 479

    ふろく
  • YCSB github公式サイト
  • YCSB wiki
  • YCSBテストHBAse
  • HrdHistograplotterを使用して図
  • を描く
  • 95パーセントの概念理解
  • ycsbテストHBASEとMYSQL