本記事では、YCSBツールを使用してOBKV-HBaseの性能テストを行う方法について説明します。YCSB-OBKVは、YCSB (Yahoo! Cloud Serving Benchmark) フレームワークに基づくOBKVの性能テストツールです。OBKVインターフェースの読み書き性能ベンチマークテストに使用されます。
ツールの説明
- GitHubリポジトリ:oceanbase/YCSB(obkvブランチ)
- サポートされているテストモデル:OBKV-HBaseとOBKV-Table。本記事では、OBKV-HBaseのテスト方法についてのみ説明します。
- 使用方法(2つのうち1つを選択):
- Web UI(グラフィカルインターフェース):初心者向けで、視覚化された操作WEBインターフェースを提供します。サポートするテスト方法は比較的固定されています。
- コマンドライン(CLI):テストマシンと外部ネットワークが異なるシナリオや、より多くのカスタムテスト動作をサポートします。
- サポートされている操作タイプ:
- load(データロード)
- put(書き込み)
- read(読み取り)
- scan(スキャン)
- batch_put(バッチ書き込み)
- batch_read(バッチ読み取り)
前提条件
環境の準備
- JAVA 8+
- Maven 3.x
- デプロイ済みのOBKV-HBaseクラスタ(ODPアドレスまたは直接接続configUrlが必要)
プロジェクトの取得
プロジェクトを取得するには、以下の2つの方法があります。どちらか1つを選択してください:
リポジトリのクローン
# リポジトリをクローンし、obkvブランチに切り替える git clone -b obkv https://github.com/oceanbase/YCSB.git cd YCSBプロジェクトのディレクトリ構造は以下のとおりです:
YCSB/ ├── obkv-hbase/ # OBKV-HBaseテストモジュール ├── obkv-table/ # OBKV-Tableテストモジュール ├── webui/ # Web UIモジュール ├── core/ # YCSBコアフレームワーク ├── deploy.sh # ワンクリックデプロイスクリプト(コンパイル/起動/停止/再起動) └── docs/ # 詳細ドキュメント圧縮ファイルのダウンロード
obkvブランチをクリックして、GitHubから圧縮ファイルをダウンロードします。

Web UIの使用
サービスの起動
# 初回起動(すべてのモジュールを自動コンパイルしてWebサービスを起動)
./deploy.sh start --rebuild
# 以降の起動(JARが既に存在する場合、直接起動)
./deploy.sh start
# サービス管理コマンド
./deploy.sh status # 実行状態の確認
./deploy.sh logs --follow # ログのリアルタイム表示
./deploy.sh stop # サービスの停止
./deploy.sh restart # サービスの再起動
起動後、ブラウザでhttp://localhost:8080にアクセスします。
手順
テーブルの作成:上部でモジュール(OBKV HBase)を選択→「テーブル作成ウィザード」タブ→パーティションパラメータの入力→SQLの生成→データベース接続情報の入力→テーブルの作成
テストの実行:パフォーマンステストタブ→Step1で接続情報を入力→Step2でテストモードを選択→Step3でテストタイプとパラメータを選択→テストの開始
説明:
- Step1:直接接続モードとODPモードの2種類の接続方法をサポートしています。2つの接続方法の違いについては、OBKV接続モードを参照してください。
- Step2:デフォルトモードとプレフィックスモードの2種類のテストをサポートしています。
- Step3:YCSBテスト関連のパラメータを入力します。例:負荷テストスレッド、操作数、操作タイプの割合、フィールド数、フィールドサイズなどの設定。
- Step4:クライアント関連の設定を構成できます。例:タイムアウト時間、ハンドル接続数などのパラメータ。
結果の確認:リアルタイムログタブで出力を確認し、テスト完了後は結果タブでスループットとレイテンシを確認します。
注意
loadでデータを書き込んだ後に、read/scan/batch_readテストを実行する必要があります。履歴記録:テスト結果、テスト設定、テスト設定の再利用による再テストなど、過去のテスト記録を確認します。
コマンドラインの使用
コマンドラインを使用したテストの手順は以下のとおりです。
# Step 1: コンパイル
cd obkv-hbase && ./build.sh
# Step 2: テーブル作成用SQLの生成
# 1レベルのRANGEパーティション:
./create_table.sh --max_key 1000 --partition_count 4
# 1レベルのKEYパーティション:
./create_table.sh --mode hbase --type first_part --partition_type key --partition_count 4
# サブパーティション(Range + Key):
./create_table.sh --mode hbase --type sec_part \
--range_partition_count 30 \
--range_start_timestamp 1704067200000 \
--range_partition_duration_ms 2592000000 \
--key_subpartition_count 40
# Step 3: OceanBaseにて生成されたSQLファイルを実行
# Step 4: workloads/workload_loadを編集し、接続パラメータを入力する(少なくとも以下のパラメータを入力)
# hbase.oceanbase.odpMode=true
# hbase.oceanbase.odpAddr=<ODPアドレス>
# hbase.oceanbase.odpPort=<ODPポート>
# hbase.oceanbase.fullUserName=<user@tenant#cluster>
# hbase.oceanbase.password=<パスワード>
# hbase.oceanbase.database=<データベース名>
# hbase.oceanbase.table=ycsb_test
# hbase.oceanbase.columnFamily=cf
# Step 5: テストを実行(コマンドはOBKV-Tableと同じ)
./run_fast_test.sh load
./run_fast_test.sh read
主要パラメータ一覧
このセクションでは、YCSBの共通パラメータとOBKV-HBase専用パラメータについて説明します。
YCSB共通パラメータ
パラメータ |
説明 |
タイプ |
デフォルト値 |
|---|---|---|---|
| recordcount | データセットの総レコード数 | Int | — |
| operationcount | 実行段階の操作総数 | Int | — |
| threadcount | 同時実行スレッド数 | Int | 1 |
| fieldcount | 各レコードのフィールド数 | Int | 10 |
| fieldlength | 各フィールドのバイト長 | Int | 100 |
| requestdistribution | リクエスト分布(uniform/zipfian/hotspot/latest) | String | uniform |
| insertorder | キー生成順序(hashed/ordered) | String | hashed |
OBKV-HBase接続パラメータ
パラメータ |
説明 |
ODPモード |
直接接続モード |
|---|---|---|---|
| hbase.oceanbase.odpMode | 接続モード | true | false |
| hbase.oceanbase.odpAddr | ODPアドレス | 必須 | — |
| hbase.oceanbase.odpPort | ODPポート | 必須 | — |
| hbase.oceanbase.paramURL | 直接接続URL | — | 必須 |
| hbase.oceanbase.sysUserName | システムユーザー名 | — | 必須 |
| hbase.oceanbase.sysPassword | システムパスワード | — | 必須 |
| hbase.oceanbase.fullUserName | ユーザー名 (user@tenant#cluster) | 必須 | 必須 |
| hbase.oceanbase.password | パスワード | 必須 | 必須 |
| hbase.oceanbase.database | データベース名 | 必須 | 必須 |
| hbase.oceanbase.table | テーブル名 | 必須 | 必須 |
| hbase.oceanbase.columnFamily | カラムファミリー名 | 必須 | 必須 |
OBKV-HBaseテストパラメータ
モード |
obkv.testMode値 |
適用パーティションタイプ |
追加要件 |
|---|---|---|---|
| デフォルトモード | default | 1レベルのKEYまたはRANGEパーティションテーブル | なし |
| プレフィックスクエリモード | prefix | 1レベルまたは2レベルのパーティションテーブル | insertorder=ordered |
結果の解釈
テスト終了後、以下の主要な指標を分析することで、テスト結果が期待通りかどうかを判断できます:
指標 |
意味 |
最適化の方向性 |
|---|---|---|
| Throughput(ops/sec) | 1秒間の操作数 | 高いほど良い |
| AverageLatency(us) | 平均遅延(マイクロ秒) | 低いほど良い |
| 95thPercentileLatency(us) | P95遅延 | 低いほど良い |
| 99thPercentileLatency(us) | P99遅延 | 低いほど良い |
| Return=OK / Return=ERROR | 成功/失敗回数 | ERRORは0である必要があります |
よくある質問
- read/scan/batch_readエラー:まず
loadコマンドでデータをロードしてください。 - プレフィックスモードで失敗した場合:insertorderがorderedに設定されているか確認してください。
- デバッグ問題:
obkv.debug=trueを設定してデバッグログを有効にしてください。 - key_range テーブルのデータ分布が均一でない場合:パーティションパラメータがテーブル作成時と一致しているか確認してください。
詳細ドキュメントインデックス
以下のドキュメントは、プロジェクトリポジトリの docs/ ディレクトリにあり、より詳細なパフォーマンステストの使用ガイドを提供します。
ドキュメント |
説明 |
リンク |
|---|---|---|
| クイックスタート | 5分で初回テストを実行する | getting-started.md |
| Web UIガイド | グラフィカルインターフェースの完全な操作説明 | guide-webui.md |
| コマンドラインガイド | コマンドラインでの完全な操作説明 | guide-cli.md |
| パラメータ設定リファレンス | すべてのパラメータの意味、タイプ、デフォルト値 | params-reference.md |
| Workload参考 | Workloadファイルのテンプレートと例 | workload-reference.md |
| OBKV-HBaseモジュール詳解 | テーブルモデル、テストモード、パーティショニング戦略 | module-obkv-hbase.md |
| Web UIアーキテクチャ設計 | アーキテクチャ、SSE、リソース分離 | webui-architecture.md |
| Web UI APIリファレンス | REST APIの完全なドキュメント | webui-api-reference.md |
| よくある質問 | FAQ集 | faq.md |