LoginSignup
5
4

More than 5 years have passed since last update.

ベンチマーク取る為にYCSBをインストールする手順

Posted at

昔、MongoDBのベンチマークをYCSBを使って取った時のメモです

YCSBとは

YCSB(Yahcoo Cloud Serving Benchmark)とは、ざっくり言うとYahoo!が作っている
NoSQL向けのベンチマークツールです。
YCSBプロジェクトGitレポ
YCSB Wiki

YCSBの導入手順

導入環境

  • CentOS6.5

必要なパッケージ

Java

# 今回はjava-1.7.0-openjdkを入れました
$ yum search java
$ yum install java-1.7.0-openjdk-devel.x86_64

Maven

# 今回は、apache-maven-3.2.1を入れました
$ cd /usr/local/src/
$ wget http://www.motorlogy.com/apache/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.zip
$ unzip apache-maven-3.2.1-bin.zip
$ mv apache-maven-3.2.1/ /opt/maven
$ ln -s /opt/maven/bin/mvn /usr/bin/mvn

# mvnのパス設定する(PATH=$MAVEN_HOME/bin:$PATH)
$ vim /etc/profile.d/maven.sh
#!/bin/bash
MAVEN_HOME=/opt/maven
PATH=$MAVEN_HOME/bin:$PATH
export PATH MAVEN_HOME
export CLASSPATH=.
chmod +x /etc/profile.d/maven.sh
source /etc/profile.d/maven.sh

mvnのバージョン確認(パスが通ってるのも)
$ mvn -version

YCSB

# YCSBのインストールにgitコマンドを使うので、もしなければインストールします
$ yum install git

# YCSBをgitレポからcloneしてくる
$ git clone git://github.com/brianfrankcooper/YCSB.git

# YCSBディレクトリへ移動
$ cd YCSB

# このままだとmapkeeperのビルドにコケるので、pom.xmlを編集する
# 編集する前にバックアップとっておく
$ cp pom.xml pom.xml.bk

# 下記の2行をコメントアウトしておく
vim pom.xml
<!--<mapkeeper.version>1.0</mapkeeper.version>--> 
<!--<module>mapkeeper</module>-->

$ mvn clean package

簡単な使い方

YCSBコマンドは、ヘルプで確認出来ます

$ cd YCSB
$ ./bin/ycsb -h

ベンチマーク取る前の準備

YCSBの設定ファイルを編集する

$ cd YCSB
$ vim workloads/workloada
簡単な設定項目
項目 設定内容   
recordcount ロードフェーズで挿入するデータのレコード数
operationcount トランザクションフェーズで実行されるクエリの回数
workload workloadを実行するクラス
fieldcount 1レコードあたりのフィールド数
fieldlength 各フィールドのサイズ
readallfileds レコード内の全フィールドを読むのか(true)、1つだけにするか(false)
readproportion 全operationに対する読込の割合
updateproportion 全operationに対する更新の割合
insertproportion 全operationに対する挿入の割合
scanproportion 全operationに対するスキャンの割合
readmodifywriteproportion 全operationに対する読込、修正、更新の割合
requestdistribution リクエスト分布方式、uniform、zipfian、latestから選択
maxscanlength スキャンする際の最大レコード数
scanlengthdistribution スキャンするためのレコード数と各スキャンでのリクエスト分布方式
insertorder データ挿入する順序。キー順(ordered)かハッシュ順(hashed)

ベンチ実行

今回はmongodbで行った時のコマンドを載せてます。
mongodbとなっている部分はそれぞれredisなどベンチとりたいDBに変えてください

# コレクションの作成
$ ./bin/ycsb load mongodb -s -P workloads/workloada

# ベンチマーク実行
$ ./bin/ycsb run mongodb -s -P workloads/workloada

おまけ

今回は、自分はMongoDBのベンチマーク取るのに使ったので、おまけにその時に使ったコマンドも
メモとして書いておきました。(port番号は、よしなに変更して下さい)

# データベース(ycsb)のusertable内のコレクション中身を確認する
$ echo 'db.usertable.findOne()' | mongo localhost:27017/ycsb

# データベース(ycsb)のusertable内のコレクション数を数える
$ echo 'db.usertable.count()' | mongo localhost:27017/ycsb

# ドキュメントサイズの確認
$ echo 'Object.bsonsize(db.usertable.findOne())' | mongo localhost:27017/ycsb 

# コレクションの中身を空にする
$ echo 'db.usertable.remove()' | mongo localhost:27017/ycsb 
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4